小学复赛试题精选
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
小学复赛模拟试题(一)及参考答案
第1题摘李子(plums)
问题描述:
六一儿童节就要到了,晨晨学校组织n位学生去农场摘李子。为了体现同学友好,大家把摘到的李子集中起来,然后平均分配给学生,剩余的李子就送给老师;另外,为了让老师也更多地分享同学们的快乐,同学们还约定:如果按前面办法分配后老师得到的李子数比每个同学的少,则每位同学再拿一个出来送给老师。
现在晨晨想知道每位同学最后能收获多少个李子?送给了老师多少个李子?
输入格式:
第一行:一个整数n(1≤n≤200)。
第二行:n个200以内的正整数,它们之间用一个空格隔开,代表每人摘到的李子数。
输出格式:
第一行:一个整数,代表每位学生最后能收获的李子数。
第二行:一个整数,代表老师最后能收到的李子数。
输入样例1:
4
3 5 2 1
输出样例1:
2
3
输入样例2:
10
95 90 88 92 94 98 96 93 92 94
输出样例2:
84
92
【问题分析】
给出n个数,求出平均数(去尾),若这次除法的余数小于商,就把商减一,余数加n。然后直接输出。
【算法分析】
只要求和,求余数操作。Integer能过70%的数据,longint能过全部数据。属于送分题。【参考程序】
var
n,i,j,k,t,l:longint;
begin
assign(input,'plums.in');
assign(output,'plums.out');
reset(input);
rewrite(output);
readln(n);
for i:=1 to n do
begin
read(k); t:=t+k; //输入并求和
end;
k:=t div n; //进行除法操作
l:=t mod n;
if l begin k:=k-1; l:=l+n; end; writeln(k); //输出 writeln(l); close(input); close(output); end. 第2题阅读训练(read) 问题描述: 一天晨晨在做阅读训练。她拿了一本包括n篇文章的小说集,第i篇文章包 括b i (1≤b i ≤100)页,已知晨晨每读一页都要花一分钟。假设晨晨开始阅读小 说第一页的时间起点为0,她读第一篇文章从时间点0到时间点b 1 -1,第二篇文 章从时间点b 1到时间点b 1 +b 2 -1,依此类推…,阅读第n篇文章的时间点b 1 +b 2 +… +b n-1到时间点b 1 +b 2 +…+b n-1 +b n -1。那么,当在时间点t时(0≤t<阅读总时间),你 知道晨晨在阅读第几篇文章吗? 其实晨晨的好奇心比你还强,虽然阅读还未正式开始,但她很想知道在未来Q 个时间点时,自己分别会在阅读哪一篇文章? 严重偏文科的晨晨,感觉这个问题很棘手,就想请你这个电脑高手帮忙。 例如:如果一本书包括三篇文章:第一篇文章2页,第二篇文章1页,第三篇文章3页,那么时间点与所读文章(序号)的关系如下图所示: 第一行:包括空格分开的两个整数N和Q (其中1≤n≤100,1≤Q≤1000) 。 接下来的N行,每行一个整数代表每篇文章的页数。 再接下来是Q行,每行一个整数代表一个时间点。 输出格式: 总共Q行,每行一个数,代表按输入顺序的每个时间点正在阅读的文章序号。输入样例: 3 5 2 1 3 2 3 4 1 输出样例: 2 3 3 1 1 【问题分析】 给出N个数,每个数占这个数大小的时间(时间第一个单位是0),然后给出Q个时间点,输出这些时间点对应的数。 【算法分析】 把N个数在一个数组中表示出来,然后对每个时间点进行查找再输出即可。 【参考程序】 var n,m,i,j,k,t,l:longint; a:array[0..10000] of longint; begin assign(input,'read.in'); assign(output,'read.out'); reset(input); rewrite(output); readln(n,m); t:=0; for i:=1 to n do begin readln(k); //输入 for j:=t to t+k-1 do a[j]:=i; //在数组中表示数 t:=t+k; end; for i:=1 to m do begin readln(k); writeln(a[k]); //输出 end; close(input); close(output); end. 第3题填字游戏(game) 问题描述: 六一儿童节就要到了,晨晨的学校进行游园活动,其中一个游戏为填字游戏,规则为:有一个R行C列的棋盘(2≤R,C≤25),棋盘上的每一个格子要么是空的,可以填一个十进制数字;要么是堵上的,以字符“#”表示(即不能填东西)。棋盘中从左往右连续的数字排列可视为一个十进制整数。 现在给你一个已填好的棋盘,请你帮忙找出棋盘里面最小的整数。 输入格式: 第一行:包括两个数,R和C(2≤R,C≤25),表示R行C列。 接着R行中每行包括C个字符,这些字符要么是数字,要么是“#”。输入数据保证存在解,不存在前导0的情况(例如:01,002)。 输出格式: 棋盘中最小的整数。 输入样例: 3 6 3#5789 897#51 163#31