2016余姚市小学组复赛试题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2016年余姚市程序设计竞赛
小学组
(请选手务必仔细阅读本页内容)
四.注意事项
1、文件名(程序名和输入输出文件名)必须使用小写。
2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。
3、评测时采用的机器配置为:CPU 2.4GHz,内存2G。
(water.pas/c/cpp)
【问题描述】
小明向小学生们发起了一个节约用水的活动,在他的鼓舞下,大家都纷纷行动起来,并且把节水成果陆续发给小明。
小明共收到了来自全国各地的N份节水成绩单,每份中都标注了该小朋友节水的天数Di和每天节水数Li。现在摆在小明面前一个头疼的问题,到底这个活动节约了多少自来水呢?请你帮他算一下吧
【输入】
第一行一个整数N,表示小明收到的节水成绩单的数量。
接下来N行,每行两个整数Di和Li,表示第i位小朋友节水天数和每天节水数量。
【输出】
输出N个小朋友共节水数量。
【样例解释】
共3位小朋友的节水成绩单,总节水量:3*4+2*1+6*3=32
【数据范围】
30%的数据,N<=3, 1<=Di<=100,1<=Li<=100.
70%的数据,N<=1000, 1<=Di<=100,1<=Li<=100
100%的数据,N<=1000000,1<=Di<=100,1<=Li<=100
(hike.pas/c/cpp)
【问题描述】
小明决定徒步完成一个N天的远足登山活动。第一天他带上一个大睡袋和足够的食物,从大本营出发。大本营的海拔高度为0,在第N天,他必须回到大本营。在这N天中,他可以在他的大睡袋和简易的帐篷中入睡。
在每天的登山活动中,他可以选择向山顶出发,也可以选择下山(同一天只能选择一种方式),而且有如下两条规则:
1、在登山过程中,他不能走的太快,海拔的升高的过程,空气的含氧量会发生变化,因此每天只能上升A米的海拔。
2、在下山过程中,他也不能走的太快,否则他的膝盖无法承受冲击。每天他只能下降B米的海拔。
例如:某天早晨小明处在470米的海拔位置,A=100且B=200,那么他在这天中可以向上到达570米的位置,也可以下山达到海拔270米的位置,因此一天结束后,他可能处在的海拔位置在270~570米之间。
现在,给定N,A和B,问小明最多能到达海拔多少米的高度。
【输入】
第一行三个整数,N,A和B,表示N天的登山远足活动,每天可以向上爬海拔A米,也可以下山下降海拔B米。
【输出】
输出一个整数,表示在第N天中能到达的最高海拔高度。
【输出输出样例1】
【样例1解释】
第一天向上爬7,第二天向上爬3到达海拔10,第三天回到大本营。
【输出输出样例2】
第一天和第二天分别向上爬40,后面3天下山分别30+30+20
【数据范围】
对于50%的数据,2<=n<=20,1<=A,B<=50
对于100%的数据,2<=n<=50,1<=A,B<=50
3.交替01串
(alter.pas/c/cpp)
【问题描述】
一个交替01串被定义为一个字符串,只有字符“0”和“1”组成,且任意相邻两个字符都是不同的。例如:”1“,”10101“,”0101010“都是交替01串
现在给定一个01字符串s,问其中最长的连续子串,是交替01串的长度是多少?
【输入】
输入共一行,一个字符串s,只有字符”0“或者”1“组成。
【输出】
输出一个整数,表示最长的交替01串长度。
最长串为“101”
【数据范围】
对于30%的数据,s的长度<=100
对于70%的数据,s的长度<=1000
对于100%的数据,s的长度<=1000000
4.回文数列
(array.pas/c/cpp)
【问题描述】
小明非常喜欢回文数列。回文数列是指一个包含N个整数的数列A,分别为A[1],A[2],……,A[n],对于第i(1<=i<=N)个数A[i],都有A[i]=A[N-i+1]。但是回文数字非常难得到。
现在小明想到了一个办法,他可以将数列中,任意两个相邻的数字合并,用它们的和来代替,合并完成的值还可以和其他值不断合并,直到只剩下一个数。要知道一个数肯定是回文数列。
当然,小明希望他的回文数列尽可能长,因此,请你帮助小明计算一下,对于一个长度为N的数列,经过最少多少次合并,可以构成一个回文数列。
【输入】
第一行一个整数N,表示数列中整数的个数。
第二行包含N个正整数,中间用空格分开,表示数列中的数字。
【输出】
输出一个最小合并次数,使得数列变成回文数列。
【输出输出样例1】
将1,2合并得到回文数列3 3
【输出输出样例2】
将2,4合并,得到回文数列1 6 6 1
【样例3解释】
先将1和4合并,得到5 3 2,再将3 2合并得到5 5是回文数列
【数据范围】
30%的数据,N<=10
60%的数据,N<=1000
100%的数据,N<=1000000,a[i]<=10^9。