“讯飞杯”合肥市第二十九届信息学奥林匹克竞赛
小学组“讯飞杯”合肥市第二十九届青少年信息学
奥林匹克竞赛(小学组)试题及部分答案
(请选手务必仔细阅读本页内容)
一、题目概况
中文题目名称源程序名
输入文件名
输出文件名
满分
测试点数目
是否有部分分内存限制
每个测试点时限
素数
number
number.in
number.out
100
10
否
128M
1秒
换座位
shuffle
shuffle.in
shuffle.out
100
10
否
128M
1秒
楼梯
stair
stair.in
stair.out
100
10
否
128M
1秒
二、注意事项
1. 考试时间为150 分钟。
2. 务必看清题目,严格按照所要求的格式输入、输出。
3. 在调试程序时请先使用题目中的示例数据,然后再自行设计多组测试数据进行调试。
4. 每题有10 个测试点,测试有严格的时间限制,请尽可能优化算法。
5. 命名规则:
(1)每题都规定了该题的英文名称。
(2)程序文件和数据文件的主文件名都是该题的英文名字。
(3)程序文件扩展名采用语言环境的默认扩展名。
(4)数据文件都是文本文件,输入和输出文件的扩展名分别是.in 和.out。
6. 程序应从输入文件读取数据,并严格地按照规定的输出格式将结果输出到输出文件中。
输入数据文件和输出数据文件都与程序在同一个目录中,由于程序所在目录是不确定的,因此不允许在文件名中含有盘符信息和任何形式的路径信息。
7. 选手在竞赛结束时应在D 盘的根目录下建立以准考证号命名的文件夹,并将所完成各题
的源程序文件和可执行文件拷贝到该文件夹中。
“讯飞杯”合肥市第二十九届信息学奥林匹克竞赛小学组
1.素数(number)
【问题描述】
期中考试刚刚结束,聪聪是班上的学习委员,可是这次数学成绩班上好多同学都考了满
分,聪聪只考了98 分,就错在一道求素数的题目上,题目是这样的:已知N 和M 两个正整数,求N 至M 之间(包括N 和M)有多少个素数。
聪聪觉得很懊恼,他决定必须研究清楚这个问题。
由于聪聪今年刚加入学校的计算机兴趣班,于是他决定利用编程来解决这个问题,
你能帮助他吗?
【输入文件】
输入文件共一行:两个正整数数N 和M,中间以一个空格隔开。
【输出文件】
输出文件一个正整数:表示N 至M 之间(包括N 和M)的素数个数。
【输入输出样例】
number.in
3 7
【数据说明】
1≤N<M≤32767。
number.out
3
2.换座位(shuffle)
【问题描述】
在你的帮助下,聪聪很快解决了这个问题,信心又回来了。
老师为了奖励聪聪这种知难
而进的精神,决定把今年的庆祝少先队建队63 周年纪念活动中的游戏项目交给聪聪来策划。
聪聪可高兴了,他召集了班上的少先队员一起来讨论,最终确定了这样一个游戏:班上
共有2N 个少先队员,开始时每个少先队员坐在自己的板凳上排成一队,由聪聪开始击鼓,
每次击鼓开始时,前N 个同学坐到第2、4、…、2N 个板凳上,后N 个同学坐到第1、3、…、2N-1 个板凳上,击鼓结束时坐错或者还没有坐到对应板凳上的同学就要接受惩罚——表演
一个节目。
聪聪不断的击鼓然后停顿后又击鼓,同学们都觉得这个游戏很好玩,但是当游戏
结束时,同学们傻眼了,由于每位同学的板凳都差不多,他们找不到自己的板凳了。
这次聪
聪反应特别快,他说经过一定次数的换座位,每位同学一定能回到自己的板凳的。
那么这个
次数最少是多少呢?你会计算吗?
【输入文件】
输入共一行,一个正整数N。
【输出文件】
输出文件一个正整数,每位同学都回到自己板凳的最少换座位次数。
【输入输出样例】
shuffle.in
10
【数据范围】1≤N≤10,000。
shuffle.out 6
“讯飞杯”合肥市第二十九届信息学奥林匹克竞赛小学组
这个游戏启发了聪聪,他想:如果积木底盘无限大,当积木数很多时,能摆放的情况就
有很多很多,你能计算出有N 个积木时按照上述规则能摆放出多少种情况吗?
【输入文件】
输入文件为一个正整数N(N≥3),表示积木个数。
【输出文件】
输出文件一个正整数,表示能摆放出的情况数。
【样例输入输出】
stair.in
5
【数据范围】
对于40%的数据满足N≤10;对于80%的数据满足N≤100;对于100%的数据满足N≤200。
stair.out 2
答案:program shuffle(input,output); var
a,b:array[1..20000] of integer;
n,i,j,t:integer;
begin
readln(n);
for i:=1 to 2*n do a[i]:=i;
repeat
j:=j+1;
for i:=1 to 2*n do
begin
if a[i]<=n then a[i]:=a[i]*2
else
a[i]:=(a[i]-n)*2-1;
end;
until a[1]=1;
writeln(j);
end.
3. 楼梯(stair)
【问题描述】
聪聪的游戏全校同学都很喜欢,老师表扬了聪聪。
放学回家以后,发现小表弟在家,妈
妈告诉表弟:“聪聪哥哥特别会玩游戏,你让聪聪哥哥陪你玩啊!,小表弟就拿出他的积木”让聪聪陪他玩,聪聪开始不想在家陪表弟,他想和同学出去玩呢,可是妈妈说,如果陪表弟玩开心了,周末就带他去游乐场。
听了这话,聪聪就跟妈妈保证,一定好好陪小表弟玩。
聪聪一边拿着表弟的积木,一边在想,平常的游戏表弟都玩腻了,有什么新的好玩的呢。
不一会聪聪就想到了,小表弟的这组积木有个底盘,是由很多方格组成的,积木中正好有一些与方格大小相同的正方形积木,聪聪和小表弟一起按如下规则将这些正方形积木摆放在底盘上:底盘的每一竖行方格组成一列,必须从最左边的一列开始摆放,每列从最下面的方格开始连续摆放积木,底盘至少要放两列,后一列放的积木数至少比前一列多一个。
下图为5个积木所能摆放的出的情况。
聪聪一边教表弟一边摆出不同积木数的各种情况。