2016余姚市小学组复赛试题

更新时间:2023-09-21 23:21:01 阅读量: 工程科技 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

2016年余姚市程序设计竞赛 小学组

2016年余姚市程序设计竞赛

小学组

(请选手务必仔细阅读本页内容)

一. 题目概况 节水活动 water water water.in water.out 1秒 10 10 有 传统 远足活动 hike hike hike.in hike.out 1秒 20 5 有 传统 交替01串 alter alter alter.in alter.out 1秒 20 5 有 传统 回文数列 array array array.in array.out 1秒 20 5 有 传统 中文题目名称 英文题目名称 可执行文件名 输入文件名 输出文件名 每个测试点时限 测试点数目 每个测试点分值 附加样例文件 题目类型

二. 提交源程序文件名 water.pas 对于pascal语言 对于C语言 对于C++语言 water.c water.cpp hike.pas hike.c hike.cpp alter.pas alter.c alter.cpp array.pas array.c array.cpp 三. 运行内存限制 256M 256M 256M 256M 内存上限 四. 注意事项

1、 文件名(程序名和输入输出文件名)必须使用小写。

2、 C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。 3、 评测时采用的机器配置为:CPU 2.4GHz,内存2G。

第 1 页 共 5 页

2016年余姚市程序设计竞赛 小学组

1. 节水活动 (water.pas/c/cpp)

【问题描述】

小明向小学生们发起了一个节约用水的活动,在他的鼓舞下,大家都纷纷行动起来,并且把节水成果陆续发给小明。

小明共收到了来自全国各地的N份节水成绩单,每份中都标注了该小朋友节水的天数Di和每天节水数Li。现在摆在小明面前一个头疼的问题,到底这个活动节约了多少自来水呢?请你帮他算一下吧

【输入】

第一行一个整数N,表示小明收到的节水成绩单的数量。

接下来N行,每行两个整数Di和Li,表示第i位小朋友节水天数和每天节水数量。 【输出】

输出N个小朋友共节水数量。

【输入输出样例】 water.in water.out 3 3 4 2 1 6 3 32 【样例解释】

共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

第 2 页 共 5 页

2016年余姚市程序设计竞赛 小学组

2. 远足活动 (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】 hike.in 3 7 10 hike.out 10 【样例1解释】 第一天向上爬7,第二天向上爬3到达海拔10,第三天回到大本营。 【输出输出样例2】 hike.in hike.out 80 5 40 30 【样例2解释】 第一天和第二天分别向上爬40,后面3天下山分别30+30+20 【数据范围】

对于50%的数据,2<=n<=20,1<=A,B<=50 对于100%的数据,2<=n<=50,1<=A,B<=50

第 3 页 共 5 页

2016年余姚市程序设计竞赛 小学组

3. 交替01串 (alter.pas/c/cpp)

【问题描述】

一个交替01串被定义为一个字符串,只有字符“0”和“1”组成,且任意相邻两个字符都是不同的。例如:”1“,”10101“,”0101010“都是交替01串

现在给定一个01字符串s,问其中最长的连续子串,是交替01串的长度是多少?

【输入】

输入共一行,一个字符串s,只有字符”0“或者”1“组成。 【输出】

输出一个整数,表示最长的交替01串长度。

【输出输出样例1】 alter.in alter.out 1110111 【样例1解释】 最长串为“101” 【输出输出样例2】 alter.in 0101011 3 alter.out 6

【数据范围】

对于30%的数据,s的长度<=100 对于70%的数据,s的长度<=1000 对于100%的数据,s的长度<=1000000

第 4 页 共 5 页

2016年余姚市程序设计竞赛 小学组

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】 array.in array.out 3 1 2 3 【样例1解释】 将1,2合并得到回文数列3 3

【输出输出样例2】 array.in 5 1 2 4 6 1 【样例2解释】 将2,4合并,得到回文数列1 6 6 1 【输出输出样例3】 array.in 4 1 4 3 2 1 array.out 1 array.out 2 【样例3解释】

先将1和4合并,得到5 3 2,再将3 2合并得到5 5是回文数列 【数据范围】

30%的数据,N<=10 60%的数据,N<=1000

100%的数据,N<=1000000,a[i]<=10^9。

第 5 页 共 5 页

本文来源:https://www.bwwdw.com/article/veuh.html

Top