20XX年xx区青少年信息学竞赛试题小学甲组 解题报告.docx
- 文档编号:18116193
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:8
- 大小:20.76KB
20XX年xx区青少年信息学竞赛试题小学甲组 解题报告.docx
《20XX年xx区青少年信息学竞赛试题小学甲组 解题报告.docx》由会员分享,可在线阅读,更多相关《20XX年xx区青少年信息学竞赛试题小学甲组 解题报告.docx(8页珍藏版)》请在冰点文库上搜索。
20XX年xx区青少年信息学竞赛试题小学甲组解题报告
20XX年南海区青少年信息学竞赛试题(小学甲组)解题报告
NHOI’20XX小学甲组试题
20XX年南海区青少年信息学奥林匹克竞赛试题
(小学甲组)
注意事项:
1.本次竞赛将使用评测系统进行自动评测,以源程序的测试结果为准。
2.要利用文件严格按题目要求的格式进行输入输出,否则将被判为错误而不得分。
3.所有文件要按试卷指定的文件名命名,程序中不要使用绝对路径,否则将无法测试而被判为0分。
4.比赛结束前,要将最完善的源程序集中保存到以选手考号加姓名命名的文件夹中(例如:
XJ372陈才),该文件夹中不能再设子文件夹;同时还要在选手程序文件夹中建一个文件“程序清单.txt”,文件内容写清上交的程序文件名。
5.现场编程3小时,每测试点时间限制1秒、内存限制128M,每题50分,总分300分。
6.各题程序及数据文件名规定:
题号试题名称输入文件名输出文件名第一题字母统计第二题魔法袋子 第三题排座位 第四题完全数 第五题学生代表 第六题拯救花园 程序文件名 第一题字母统计
问题描述:
晨晨刚上幼儿园,对字母很感兴趣,特别是对‘b’、‘B’、‘m’、‘M’四个字母感觉很亲切,因为这四个字母很像“爸”、“妈”的发音。
每次看到一段英文文章,她都要数一数文章里面有多少个上面四个字母。
于她刚学数数,数不准,想让大哥哥、大姐姐帮她数一下,你能帮她吗?
输入格式:
一行:
输入一段以‘#‘结束的字符串。
输出格式:
一行:
一个整数代表字符串出现了多少个‘b’、‘B’、‘m’、‘M’字母。
输入样例:
Thanksforbeingthere,mom.HappyMother’sDay.#输出样例:
4
第1页共10页
NHOI’20XX小学甲组试题
数据范围:
对于80%的数据,字符串长度小于255;对于100%的数据,字符串长度小于1000;问题分析:
给出一串字符串,统计出字符串中出现了多少个‘b’、‘B’、‘m’、‘M’字母。
算法分析:
直接统计。
参考程序:
varch:
char;s:
longint;begin
assign(input,'');reset(input);assign(output,'');rewrite(output);read(ch);whilech'#'dobegin
if(ch='b')or(ch='B')or(ch='m')or(ch='M')then inc(s); read(ch);end;writeln(s);
close(input);close(output);end.
第二题魔法袋子
问题描述:
于晨晨在幼儿园表现很好,圣诞节的时候,圣诞老人送给了她一个魔法袋。
这个魔法袋袋口是圆形的,而且知道袋口的半径为r,袋子很深可以装下很多东西,但是规定只能装圆形的物品,刚好晨晨圣诞节收到的礼物都是圆形的。
现在晨晨想把自己的礼品都放进魔法袋里面。
已知晨晨所有礼物的半径,请问你能帮晨晨统计一下有多少个礼物可以放进魔法袋里面呢?
输入格式:
第一行:
包括空格分开的两个整数nr分别代表晨晨礼物数量和魔法袋半径(n,r≤10000000)。
第二行:
n个整数代表晨晨礼物的半径(半径≤10000000)。
输出格式:
一个整数,魔法袋能放进礼物的数量。
半径:
r第2页共10页NHOI’20XX小学甲组试题
输入样例:
53
213410输出样例:
3
问题分析:
统计给出的n件礼物中,有多少件礼物的半径≤魔法袋半径。
算法分析:
直接统计。
参考程序:
var
n,x,r,i,s:
longint;begin
assign(input,'');reset(input);assign(output,'');rewrite(output);read(n,r);fori:
=1tondobegin read(x); ifxcthen
writeln(x*2+2,'',c*2+1-y) else
writeln(x*2+1,'',y);end;
close(input);close(output);end.
第四题完全数
问题描述:
最近晨晨对数字很感兴趣,特别是她认为“完全数”是最美的数字,所谓完全数是真约数之和等于它本身的数。
例如28的约数是1,2,4,7,14,并且1+2+4+7+14=28,所以28是完全数。
晨晨想找出一段连续数据里面的所有完全数,如求x~y中的完全数。
但是她又感觉十进制的输出没有十六进制好看,所以她想把找到的完全数用十六进制输出,如果这段数据里面没有完全数就输出“no”。
输入格式:
一行:
包括两个数,xy代表求x~y之间的完全数。
输出格式:
一行:
x~y之间用十六进制表示的完全数,数之间用空格分开。
输入样例:
229输出样例:
61C问题分析:
求出给定范围内的所有完全数的十六进制。
算法分析:
数据范围较小,可以直接统计并转换为十六进制。
其实完全数的密度是很小的,题中给出的数据范围中只有5个完全数!
只要分别判断一下在不在输入的范围内即可。
参考程序:
//直接统计var
x,y,i,j,s,t:
longint;a:
array[1..10]oflongint;f:
boolean;
第5页共10页
NHOI’20XX小学甲组试题
begin
assign(input,'');reset(input);assign(output,'');rewrite(output);read(x,y);fori:
=xtoydobegin s:
=1;
forj:
=2totrunc(sqrt(i))do ifimodj=0then s:
=s+j+idivj; ifs=ithen begin t:
=0; whiles>0do begin inc(t);
a[t]:
=smod16; s:
=sdiv16; end;
iffthenwrite(''); forj:
=tdownto1do ifa[j]>9then write(chr(a[j]+55)) else
write(a[j]); f:
=true; end;end;
ifnotfthen write('no');writeln;
close(input);close(output);end.
第五题学生代表
问题描述:
根据上级文件的通知,晨晨学校要挑选一个学生代表,参加区学生代表大会。
学校领
第6页共10页
NHOI’20XX小学甲组试题
导想根据学生们平时的表现,找到一个各方面表现都比较平均的学生参加。
刚好,学生根据平时的表现都有自己的德育操行分r(1≤r≤1000),为了尽快找到这名代表,学校领导把学生排成n×n(2≤n≤99,n为奇数)队列,他叫每一行的同学找出自己行的德育操行分在中间位置的同学。
然后,在每一行中间位置的这些学生中再次找出处于中间位置的那个学生。
那么这个学生就是最后参加学生代表大会的学生了。
给出n×n的学生队列,找到其中的学生代表的操行分数。
输入格式:
第一行:
一个整数n;
第2..n+1行:
每一行有n个整数,分别代表这一行里面每个学生的操行分。
输出格式:
一个整数,学生代表的操行分数。
输入样例:
5
1539525381635928833254444输出样例:
4
样例说明:
第一行中间位置的为5,第二行为3、第三行为5、第四行为3、第五行为4。
然后在53534中找到中间位置为4。
问题分析:
求出每一行的中位数的中位数。
算法分析:
直接排序寻找中位数。
参考程序:
var
n,i,j,k,t:
longint;
a,b:
array[1..99]oflongint;begin
assign(input,'');reset(input);
assign(output,'');rewrite(output);read(n);
fori:
=1tondobegin
forj:
=1tondo read(a[j]);
forj:
=1ton-1do
第7页共10页
NHOI’20XX小学甲组试题
fork:
=j+1tondo ifa[j]>a[k]then begin
t:
=a[j];a[j]:
=a[k];a[k]:
=t; end;
b[i]:
=a[ndiv2+1];end;
fori:
=1ton-1do forj:
=i+1tondo ifb[i]>b[j]then begin
t:
=b[i];b[i]:
=b[j];b[j]:
=t; end;
writeln(b[ndiv2+1]);
close(input);close(output);end.
第六题拯救花园
问题描述:
一天,晨晨发现自己的n只兔子跑到自己的花园里面,它们在尽情的吃着她的宝贝花卉。
晨晨看在眼里痛在心里,她现在只能把兔子逐个的抓回笼子里面。
而送每只兔子回去的时间都不同,例如送第i只兔子回去需要ti(1≤ti≤100)单位时间,那么晨晨送第i只兔子来回共需要花费2*ti单位时间,另外每一只兔子单位时间的破坏力都不同,例如第i只兔子单位时间内破坏di(1≤di≤100)朵花。
现在的问题是,晨晨如何安排送这n只兔子回笼子才能使这些兔子的破坏最小。
输入格式:
第一行:
一个整数n(1≤n≤100);
接着有n行,每行两个空格分开的整数tidi,分别代表第i只兔子的送回去的时间,和单位时间破坏力。
输出格式:
一行:
一个整数,代表这些兔子破坏多少花卉。
输入样例:
63125233241
第8页共10页
NHOI’20XX小学甲组试题
16输出样例:
86
样例解释:
晨晨送兔子回去的顺序分别为:
6,2,3,4,1,5。
其中先送第6只兔子回去,剩余
兔子破坏(1+5+3+2+1)*2=24朵花;送第2只兔子回去,剩余兔子破坏*4=28朵花;以此类推,送第3、4、1只兔子回去剩余兔子的破坏分别为16、12和6朵花;最后送第5只兔子回去的时候,没有兔子在花园里面了,所以破坏0朵花,最后总共破坏24+28+16+12+6=86朵花。
问题分析:
我们需要找到一个排列,使得∑D[i]*sum[i](1排在后面的数的Ti/Di。
所以,按Ti/Di排序即可。
参考程序:
var
n,i,j,p,ti,tot:
Longint;s:
double;
t,d:
array[1..100]oflongint;f:
array[1..100]ofdouble;begin
assign(input,'');reset(input);
assign(output,'');rewrite(output);read(n);
fori:
=1tondobegin
read(t[i],d[i]); f[i]:
=t[i]/d[i];end;
fori:
=1ton-1do forj:
=i+1tondo iff[i]>f[j]then begin
s:
=f[i];f[i]:
=f[j];f[j]:
=s; p:
=t[i];t[i]:
=t[j];t[j]:
=p;
第9页共10页
NHOI’20XX小学甲组试题
p:
=d[i];d[i]:
=d[j];d[j]:
=p; end;ti:
=0;
fori:
=1tondobegin
tot:
=tot+ti*d[i];ti:
=ti+t[i]*2;end;
writeln(tot);
close(input);close(output);end.
第10页共10页
NHOI’20XX小学甲组试题
20XX年南海区青少年信息学奥林匹克竞赛试题
(小学甲组)
注意事项:
1.本次竞赛将使用评测系统进行自动评测,以源程序的测试结果为准。
2.要利用文件严格按题目要求的格式进行输入输出,否则将被判为错误而不得分。
3.所有文件要按试卷指定的文件名命名,程序中不要使用绝对路径,否则将无法测试而被判为0分。
4.比赛结束前,要将最完善的源程序集中保存到以选手考号加姓名命名的文件夹中(例如:
XJ372陈才),该文件夹中不能再设子文件夹;同时还要在选手程序文件夹中建一个文件“程序清单.txt”,文件内容写清上交的程序文件名。
5.现场编程3小时,每测试点时间限制1秒、内存限制128M,每题50分,总分300分。
6.各题程序及数据文件名规定:
题号试题名称输入文件名输出文件名第一题字母统计第二题魔法袋子 第三题排座位 第四题完全数 第五题学生代表 第六题拯救花园 程序文件名 第一题字母统计
问题描述:
晨晨刚上幼儿园,对字母很感兴趣,特别是对‘b’、‘B’、‘m’、‘M’四个字母感觉很亲切,因为这四个字母很像“爸”、“妈”的发音。
每次看到一段英文文章,她都要数一数文章里面有多少个上面四个字母。
于她刚学数数,数不准,想让大哥哥、大姐姐帮她数一下,你能帮她吗?
输入格式:
一行:
输入一段以‘#‘结束的字符串。
输出格式:
一行:
一个整数代表字符串出现了多少个‘b’、‘B’、‘m’、‘M’字母。
输入样例:
Thanksforbeingthere,mom.HappyMother’sDay.#输出样例:
4
第1页共10页
NHOI’20XX小学甲组试题
数据范围:
对于80%的数据,字符串长度小于255;对于100%的数据,字符串长度小于1000;问题分析:
给出一串字符串,统计出字符串中出现了多少个‘b’、‘B’、‘m’、‘M’字母。
算法分析:
直接统计。
参考程序:
varch:
char;s:
longint;begin
assign(input,'');reset(input);assign(output,'');rewrite(output);read(ch);whilech'#'dobegin
if(ch='b')or(ch='B')or(ch='m')or(ch='M')then inc(s); read(ch);end;writeln(s);
close(input);close(output);end.
第二题魔法袋子
问题描述:
于晨晨在幼儿园表现很好,圣诞节的时候,圣诞老人送给了她一个魔法袋。
这个魔法袋袋口是圆形的,而且知道袋口的半径为r,袋子很深可以装下很多东西,但是规定只能装圆形的物品,刚好晨晨圣诞节收到的礼物都是圆形的。
现在晨晨想把自己的礼品都放进魔法袋里面。
已知晨晨所有礼物的半径,请问你能帮晨晨统计一下有多少个礼物可以放进魔法袋里面呢?
输入格式:
第一行:
包括空格分开的两个整数nr分别代表晨晨礼物数量和魔法袋半径(n,r≤10000000)。
第二行:
n个整数代表晨晨礼物的半径(半径≤10000000)。
输出格式:
一个整数,魔法袋能放进礼物的数量。
半径:
r第2页共10页NHOI’20XX小学甲组试题
输入样例:
53
213410输出样例:
3
问题分析:
统计给出的n件礼物中,有多少件礼物的半径≤魔法袋半径。
算法分析:
直接统计。
参考程序:
var
n,x,r,i,s:
longint;begin
assign(input,'');reset(input);assign(output,'');rewrite(output);read(n,r);fori:
=1tondobegin read(x); ifxcthen
writeln(x*2+2,'',c*2+1-y) else
writeln(x*2+1,'',y);end;
close(input);close(output);end.
第四题完全数
问题描述:
最近晨晨对数字很感兴趣,特别是她认为“完全数”是最美的数字,所谓完全数是真约数之和等于它本身的数。
例如28的约数是1,2,4,7,14,并且1+2+4+7+14=28,所以28是完全数。
晨晨想找出一段连续数据里面的所有完全数,如求x~y中的完全数。
但是她又感觉十进制的输出没有十六进制好看,所以她想把找到的完全数用十六进制输出,如果这段数据里面没有完全数就输出“no”。
输入格式:
一行:
包括两个数,xy代表求x~y之间的完全数。
输出格式:
一行:
x~y之间用十六进制表示的完全数,数之间用空格分开。
输入样例:
229输出样例:
61C问题分析:
求出给定范围内的所有完全数的十六进制。
算法分析:
数据范围较小,可以直接统计并转换为十六进制。
其实完全数的密度是很小的,题中给出的数据范围中只有5个完全数!
只要分别判断一下在不在输入的范围内即可。
参考程序:
//直接统计var
x,y,i,j,s,t:
longint;a:
array[1..10]oflongint;f:
boolean;
第5页共10页
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 20XX年xx区青少年信息学竞赛试题小学甲组 解题报告 20 XX 青少年 信息学 竞赛 试题 小学 解题 报告