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’字母。 输入样例:
Thanks for being there, mom. Happy Mother’s Day.# 输出样例: 4
第 1 页 共 10 页
NHOI’20XX小学甲组试题
数据范围:
对于80%的数据,字符串长度小于255; 对于100%的数据,字符串长度小于1000; 问题分析:
问题描述:
晨晨刚上幼儿园,对字母很感兴趣,特别是对‘b’、‘B’、‘m’、‘M’四个字母感觉很亲切,因为这四个字母很像“爸”、“妈”的发音。每次看到一段英文文章,她都要数一数文章里面有多少个上面四个字母。于她刚学数数,数不准,想让大哥哥、大帮她数一下,你能帮她吗? 输入格式:
一行:输入一段以‘#‘结束的字符串。 输出格式:
一行:一个整数代表字符串出现了多少个‘b’、‘B’、‘m’、‘M’字母。 输入样例:
Thanks for being there, mom. Happy Mother’s Day.# 输出样例: 4
第 1 页 共 10 页
NHOI’20XX小学甲组试题
数据范围:
对于80%的数据,字符串长度小于255; 对于100%的数据,字符串长度小于1000; 问题分析:
给出一串字符串,统计出字符串中出现了多少个‘b’、‘B’、‘m’、‘M’字母。 算法分析: 直接统计。 参考程序: var ch:char; s:longint; begin
assign(input,''); reset(input); assign(output,''); rewrite(output); read(ch); while ch'#' do begin
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,袋子很深可以装下很多东西,但是规定只能装圆形的物品,刚好晨晨圣诞节收到的礼物都是圆形的。现在晨晨想把自己的礼品都放进魔法袋里面。已知晨晨所有礼物的半径,请问你能帮晨晨统计一下有多少个礼物可以放进魔法袋里面呢? 输入格式:
第一行:包括空格分开的两个整数 n r分别代表晨晨礼物数量和魔法袋半径(n,r≤10000000)。
assign(input,''); reset(input); assign(output,''); rewrite(output); read(ch); while ch'#' do begin
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,袋子很深可以装下很多东西,但是规定只能装圆形的物品,刚好晨晨圣诞节收到的礼物都是圆形的。现在晨晨想把自己的礼品都放进魔法袋里面。已知晨晨所有礼物的半径,请问你能帮晨晨统计一下有多少个礼物可以放进魔法袋里面呢? 输入格式:
第一行:包括空格分开的两个整数 n r分别代表晨晨礼物数量和魔法袋半径(n,r≤10000000)。
第二行:n个整数代表晨晨礼物的半径(半径≤10000000)。 输出格式:
一个整数,魔法袋能放进礼物的数量。
半径:r 第 2 页 共 10 页 NHOI’20XX小学甲组试题
输入样例: 5 3
2 1 3 4 10 输出样例: 3
问题分析:
统计给出的n件礼物中,有多少件礼物的半径≤魔法袋半径。 算法分析: 直接统计。 参考程序: var
n,x,r,i,s:longint; begin
assign(input,''); reset(input); assign(output,''); rewrite(output); read(n,r); for i:=1 to n do begin read(x); if xc then
writeln(x*2+2,' ',c*2+1-y) else
writeln(x*2+1,' ',y); end;
close(input); close(output); end.
第四题 完全数
一个整数,魔法袋能放进礼物的数量。
半径:r 第 2 页 共 10 页 NHOI’20XX小学甲组试题
输入样例: 5 3
2 1 3 4 10 输出样例: 3
问题分析:
统计给出的n件礼物中,有多少件礼物的半径≤魔法袋半径。 算法分析: 直接统计。 参考程序: var
n,x,r,i,s:longint; begin
assign(input,''); reset(input); assign(output,''); rewrite(output); read(n,r); for i:=1 to n do begin read(x); if xc then
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”。 输入格式:
一行:包括两个数,x y代表求x~y之间的完全数。 输出格式:
一行:x~y之间用十六进制表示的完全数,数之间用空格分开。 输入样例: 2 29 输出样例: 6 1C 问题分析:
求出给定范围内的所有完全数的十六进制。 算法分析:
数据范围较小,可以直接统计并转换为十六进制。
其实完全数的密度是很小的,题中给出的数据范围中只有5个完全数!只要分别判断一下在不在输入的范围内即可。 参考程序: //直接统计 var
x,y,i,j,s,t:longint; a:array[1..10] of longint; f:boolean;
第 5 页 共 10 页
最近晨晨对数字很感兴趣,特别是她认为“完全数”是最美的数字,所谓完全数是真约数之和等于它本身的数。例如28的约数是1,2,4,7,14,并且1+2+4+7+14=28,所以28是完全数。晨晨想出一段连续数据里面的所有完全数,如求x~y中的完全数。但是她又感觉十进制的输出没有十六进制好看,所以她想把到的完全数用十六进制输出,如果这段数据里面没有完全数就输出“no”。 输入格式:
一行:包括两个数,x y代表求x~y之间的完全数。 输出格式:
一行:x~y之间用十六进制表示的完全数,数之间用空格分开。 输入样例: 2 29 输出样例: 6 1C 问题分析:
求出给定范围内的所有完全数的十六进制。 算法分析:
数据范围较小,可以直接统计并转换为十六进制。
其实完全数的密度是很小的,题中给出的数据范围中只有5个完全数!只要分别判断一下在不在输入的范围内即可。 参考程序: //直接统计 var
x,y,i,j,s,t:longint; a:array[1..10] of longint; f:boolean;
第 5 页 共 10 页
NHOI’20XX小学甲组试题
begin
assign(input,''); reset(input); assign(output,''); rewrite(output); read(x,y); for i:=x to y do begin s:=1;
for j:=2 to trunc(sqrt(i)) do if i mod j=0 then s:=s+j+i div j; if s=i then begin t:=0; while s>0 do begin inc(t);
a[t]:=s mod 16; s:=s div 16; end;
if f then write(' '); for j:=t downto 1 do if a[j]>9 then write(chr(a[j]+55)) else
write(a[j]); f:=true; end; end;
if not f then write('no'); writeln;
close(input); close(output); end.
第五题 学生代表
问题描述:
根据上级文件的通知,晨晨学校要挑选一个学生代表,参加区学生代表大会。学校领
第 6 页 共 10 页
begin
assign(input,''); reset(input); assign(output,''); rewrite(output); read(x,y); for i:=x to y do begin s:=1;
for j:=2 to trunc(sqrt(i)) do if i mod j=0 then s:=s+j+i div j; if s=i then begin t:=0; while s>0 do begin inc(t);
a[t]:=s mod 16; s:=s div 16; end;
if f then write(' '); for j:=t downto 1 do if a[j]>9 then write(chr(a[j]+55)) else
write(a[j]); f:=true; end; end;
if not f then 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
1 5 3 9 5 2 5 3 8 1 6 3 5 9 2 8 8 3 3 2 5 4 4 4 4 输出样例: 4
样例说明:第一行中间位置的为5,第二行为3、第三行为5、第四行为3、第五行为4。 然后在5 3 5 3 4中到中间位置为4。 问题分析:
求出每一行的中位数的中位数。 算法分析:
直接排序寻中位数。 参考程序: var
导想根据学生们平时的表现,到一个各方面表现都比较平均的学生参加。
刚好,学生根据平时的表现都有自己的德育操行分r (1≤r≤1000),为了尽快到这名代表,学校领导把学生排成n×n (2≤n≤99, n为奇数)队列,他叫每一行的同学出自己行的德育操行分在中间位置的同学。然后,在每一行中间位置的这些学生中再次出处于中间位置的那个学生。那么这个学生就是最后参加学生代表大会的学生了。
给出n×n的学生队列,到其中的学生代表的操行分数。 输入格式:
第一行:一个整数n;
第2..n+1行:每一行有n个整数,分别代表这一行里面每个学生的操行分。 输出格式:
一个整数,学生代表的操行分数。 输入样例: 5
1 5 3 9 5 2 5 3 8 1 6 3 5 9 2 8 8 3 3 2 5 4 4 4 4 输出样例: 4
样例说明:第一行中间位置的为5,第二行为3、第三行为5、第四行为3、第五行为4。 然后在5 3 5 3 4中到中间位置为4。 问题分析:
求出每一行的中位数的中位数。 算法分析:
直接排序寻中位数。 参考程序: var
n,i,j,k,t:longint;
a,b:array[1..99] of longint; begin
assign(input,''); reset(input);
assign(output,''); rewrite(output); read(n);
for i:=1 to n do begin
for j:=1 to n do read(a[j]);
for j:=1 to n-1 do
第 7 页 共 10 页
NHOI’20XX小学甲组试题
for k:=j+1 to n do if a[j]>a[k] then begin
t:=a[j]; a[j]:=a[k]; a[k]:=t; end;
b[i]:=a[n div 2+1]; end;
for i:=1 to n-1 do for j:=i+1 to n do if b[i]>b[j] then begin
t:=b[i]; b[i]:=b[j]; b[j]:=t; end;
writeln(b[n div 2+1]);
a,b:array[1..99] of longint; begin
assign(input,''); reset(input);
assign(output,''); rewrite(output); read(n);
for i:=1 to n do begin
for j:=1 to n do read(a[j]);
for j:=1 to n-1 do
第 7 页 共 10 页
NHOI’20XX小学甲组试题
for k:=j+1 to n do if a[j]>a[k] then begin
t:=a[j]; a[j]:=a[k]; a[k]:=t; end;
b[i]:=a[n div 2+1]; end;
for i:=1 to n-1 do for j:=i+1 to n do if b[i]>b[j] then begin
t:=b[i]; b[i]:=b[j]; b[j]:=t; end;
writeln(b[n div 2+1]);
close(input); close(output); end.
第六题 拯救花园
问题描述:
一天,晨晨发现自己的n只兔子跑到自己的花园里面,它们在尽情的吃着她的宝贝花卉。晨晨看在眼里痛在心里,她现在只能把兔子逐个的抓回笼子里面。而送每只兔子回去的时间都不同,例如送第i只兔子回去需要ti(1≤ti≤100)单位时间,那么晨晨送第i只兔子来回共需要花费2*ti单位时间,另外每一只兔子单位时间的破坏力都不同,例如第i只兔子单位时间内破坏di (1≤di≤100)朵花。
字符串长度为0 现在的问题是,晨晨如何安排送这n只兔子回笼子才能使这些兔子的破坏最小。 输入格式:
第一行:一个整数n(1≤n≤100);
接着有n行,每行两个空格分开的整数ti di,分别代表第i只兔子的送回去的时间,和单位时间破坏力。 输出格式:
一行:一个整数,代表这些兔子破坏多少花卉。 输入样例: 6 3 1 2 5 2 3 3 2 4 1
第 8 页 共 10 页
NHOI’20XX小学甲组试题
第六题 拯救花园
问题描述:
一天,晨晨发现自己的n只兔子跑到自己的花园里面,它们在尽情的吃着她的宝贝花卉。晨晨看在眼里痛在心里,她现在只能把兔子逐个的抓回笼子里面。而送每只兔子回去的时间都不同,例如送第i只兔子回去需要ti(1≤ti≤100)单位时间,那么晨晨送第i只兔子来回共需要花费2*ti单位时间,另外每一只兔子单位时间的破坏力都不同,例如第i只兔子单位时间内破坏di (1≤di≤100)朵花。
字符串长度为0 现在的问题是,晨晨如何安排送这n只兔子回笼子才能使这些兔子的破坏最小。 输入格式:
第一行:一个整数n(1≤n≤100);
接着有n行,每行两个空格分开的整数ti di,分别代表第i只兔子的送回去的时间,和单位时间破坏力。 输出格式:
一行:一个整数,代表这些兔子破坏多少花卉。 输入样例: 6 3 1 2 5 2 3 3 2 4 1
第 8 页 共 10 页
NHOI’20XX小学甲组试题
1 6 输出样例: 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] of longint; f:array[1..100] of double; begin
assign(input,''); reset(input);
assign(output,''); rewrite(output); read(n);
for i:=1 to n do begin
read(t[i],d[i]); f[i]:=t[i]/d[i]; end;
样例解释:
晨晨送兔子回去的顺序分别为: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] of longint; f:array[1..100] of double; begin
assign(input,''); reset(input);
assign(output,''); rewrite(output); read(n);
for i:=1 to n do begin
read(t[i],d[i]); f[i]:=t[i]/d[i]; end;
for i:=1 to n-1 do for j:=i+1 to n do if f[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;
for i:=1 to n do begin
tot:=tot+ti*d[i]; ti:=ti+t[i]*2; end;
writeln(tot);
close(input); close(output); end.
第 10 页 共 10 页
NHOI’20XX小学甲组试题
20XX年南海区青少年信息学奥林匹克竞赛试题
(小学甲组)
注意事项:
1. 本次竞赛将使用评测系统进行自动评测,以源程序的测试结果为准。
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;
for i:=1 to n do begin
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’四个字母感觉很亲切,因为这四个字母很像“爸”、“妈”的发音。每次看到一段英文文章,她都要数一数文章里面有多少个上面四个字母。于她刚学数数,数不准,想让大哥哥、大帮她数一下,你能帮她吗? 输入格式:
3. 所有文件要按试卷指定的文件名命名,程序中不要使用绝对路径,否则将无法测试而被判为0分。
4. 比赛结束前,要将最完善的源程序集中保存到以选手考号加姓名命名的文件夹中(例如:XJ372陈才),该文件夹中不能再设子文件夹;同时还要在选手程序文件夹中建一个文件“程序清单.txt”,文件内容写清上交的程序文件名。
5. 现场编程3小时,每测试点时间限制1秒、内存限制128M,每题50分,总分300分。 6. 各题程序及数据文件名规定: 题 号 试题名称 输入文件名 输出文件名 第一题 字母统计 第二题 魔法袋子 第三题 排座位 第四题 完全数 第五题 学生代表 第六题 拯救花园 程序文件名 第一题 字母统计
问题描述:
晨晨刚上幼儿园,对字母很感兴趣,特别是对‘b’、‘B’、‘m’、‘M’四个字母感觉很亲切,因为这四个字母很像“爸”、“妈”的发音。每次看到一段英文文章,她都要数一数文章里面有多少个上面四个字母。于她刚学数数,数不准,想让大哥哥、大帮她数一下,你能帮她吗? 输入格式:
一行:输入一段以‘#‘结束的字符串。 输出格式:
一行:一个整数代表字符串出现了多少个‘b’、‘B’、‘m’、‘M’字母。 输入样例:
Thanks for being there, mom. Happy Mother’s Day.# 输出样例: 4
第 1 页 共 10 页
NHOI’20XX小学甲组试题
数据范围:
对于80%的数据,字符串长度小于255; 对于100%的数据,字符串长度小于1000; 问题分析:
给出一串字符串,统计出字符串中出现了多少个‘b’、‘B’、‘m’、‘M’字母。 算法分析: 直接统计。 参考程序: var ch:char; s:longint; begin
assign(input,''); reset(input); assign(output,''); rewrite(output); read(ch); while ch'#' do begin
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.
第二题 魔法袋子
一行:一个整数代表字符串出现了多少个‘b’、‘B’、‘m’、‘M’字母。 输入样例:
Thanks for being there, mom. Happy Mother’s Day.# 输出样例: 4
第 1 页 共 10 页
NHOI’20XX小学甲组试题
数据范围:
对于80%的数据,字符串长度小于255; 对于100%的数据,字符串长度小于1000; 问题分析:
给出一串字符串,统计出字符串中出现了多少个‘b’、‘B’、‘m’、‘M’字母。 算法分析: 直接统计。 参考程序: var ch:char; s:longint; begin
assign(input,''); reset(input); assign(output,''); rewrite(output); read(ch); while ch'#' do begin
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,袋子很深可以装下很多东西,但是规定只能装圆形的物品,刚好晨晨圣诞节收到的礼物都是圆形的。现在晨晨想把自己的礼品都放进魔法袋里面。已知晨晨所有礼物的半径,请问你能帮晨晨统计一下有多少个礼物可以放进魔法袋里面呢? 输入格式:
第一行:包括空格分开的两个整数 n r分别代表晨晨礼物数量和魔法袋半径(n,r≤10000000)。
第二行:n个整数代表晨晨礼物的半径(半径≤10000000)。 输出格式:
一个整数,魔法袋能放进礼物的数量。
半径:r 第 2 页 共 10 页 NHOI’20XX小学甲组试题
输入样例: 5 3
2 1 3 4 10 输出样例: 3
问题分析:
统计给出的n件礼物中,有多少件礼物的半径≤魔法袋半径。 算法分析: 直接统计。 参考
于晨晨在幼儿园表现很好,圣诞节的时候,圣诞老人送给了她一个魔法袋。这个魔法袋袋口是圆形的,而且知道袋口的半径为r,袋子很深可以装下很多东西,但是规定只能装圆形的物品,刚好晨晨圣诞节收到的礼物都是圆形的。现在晨晨想把自己的礼品都放进魔法袋里面。已知晨晨所有礼物的半径,请问你能帮晨晨统计一下有多少个礼物可以放进魔法袋里面呢? 输入格式:
第一行:包括空格分开的两个整数 n r分别代表晨晨礼物数量和魔法袋半径(n,r≤10000000)。
第二行:n个整数代表晨晨礼物的半径(半径≤10000000)。 输出格式:
一个整数,魔法袋能放进礼物的数量。
半径:r 第 2 页 共 10 页 NHOI’20XX小学甲组试题
输入样例: 5 3
2 1 3 4 10 输出样例: 3
问题分析:
统计给出的n件礼物中,有多少件礼物的半径≤魔法袋半径。 算法分析: 直接统计。 参考
程序: var
n,x,r,i,s:longint; begin
assign(input,''); reset(input); assign(output,''); rewrite(output); read(n,r); for i:=1 to n do begin read(x); if xc then
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”。 输入格式:
一行:包括两个数,x y代表求x~y之间的完全数。 输出格式:
n,x,r,i,s:longint; begin
assign(input,''); reset(input); assign(output,''); rewrite(output); read(n,r); for i:=1 to n do begin read(x); if xc then
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”。 输入格式:
一行:包括两个数,x y代表求x~y之间的完全数。 输出格式:
一行:x~y之间用十六进制表示的完全数,数之间用空格分开。 输入样例: 2 29 输出样例: 6 1C 问题分析:
求出给定范围内的所有完全数的十六进制。 算法分析:
数据范围较小,可以直接统计并转换为十六进制。
其实完全数的密度是很小的,题中给出的数据范围中只有5个完全数!只要分别判断一下在不在输入的范围内即可。 参考程序: //直接统计 var
x,y,i,j,s,t:longint; a:array[1..10] of longint; f:boolean;
第 5 页 共 10 页
求出给定范围内的所有完全数的十六进制。 算法分析:
数据范围较小,可以直接统计并转换为十六进制。
其实完全数的密度是很小的,题中给出的数据范围中只有5个完全数!只要分别判断一下在不在输入的范围内即可。 参考程序: //直接统计 var
x,y,i,j,s,t:longint; a:array[1..10] of longint; f:boolean;
第 5 页 共 10 页
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论