小学生程序设计复赛练习题汇总 下载本文

小学生程序设计比赛练习题

1. 幸运数字 (luck.pas/c/cpp)

【问题描述】

今年圣诞节,小明收到了很多礼物,每个礼物上都有一个数字,表示对小明的祝福。可是小明有自己的想法,对小明来说,4或者7的倍数是幸运数字。

现在,小明想要知道所有数字中幸运数字之和是多少?请你帮帮小明! 【输入】

第一行一个整数n,表示小明收到了n份圣诞礼物。

第二行包含n个整数,第i个数a[i]表示第i份礼物上的数字。 【输出】

输出小明心目中的幸运数字之和。 【输入输出样例】 luck.in luck.out 5 12 13 14 15 16 17 42 【样例解释】

小明的幸运数字必须是4或者7的倍数,这里符合条件的有:12+14+16=42

【数据范围】

40%的数据,n<=100, 0

100%的数据,n<=10000, 0

2. 数字对撞机 (number.pas/c/cpp)

【问题描述】

小明发明了一个数字对撞机,两个位数相同的整数可以进行碰撞。碰撞过程中,将两个整数的每一位进行比较,较小的那个数字会被撞得粉碎,较大的数字保留下来(如果两数相同,都会保留)。例如下面例子中:

两个整数13570和21673碰撞后,对应数位上较小的值已经消失,碰撞的结果为:第一个数字剩下37,第二个数字剩下2673。

现在小明想让你写一个程序来显示数字碰撞机的结果,输入两个整数,输出碰撞后的两个数字。(注意最终结果不能包含多余的前导0)

1

【输入】 第一行一个整数x,表示输入的第一个整数。 第二行一个整数y,表示输入的第二个整数。 【输出】

输出包含两行,第一个表示x碰撞后的结果。 第二行表示y碰撞后的结果。

若x或者y所有数位上的数字都消失了,该行输出“BOOM”注意都是大写的。

【输出输出样例1】 number.in number.out 13570 21673 【样例1解释】 参考题目描述 【输出输出样例2】 number.in 37 2673 number.out 0 300 500 500 【样例2解释】 300第一位被撞碎了,剩下00,因为不能包含前导0,输出0。500没有任何一位被撞碎。

【输出输出样例3】 number.in number.out BOOM 1234 5678 5678 【样例3解释】 1234每一位都被撞碎了,输出“BOOM”,5678没有任何一位被撞碎。 【数据范围】

对于50%的数据,0<=x,y<109

对于80%的数据,0<=x,y<10100,即x,y的长度不超过100。

对于100%的数据,0<=x,y<=101000,即x,y的长度不超过1000。保证所有x和y的位数相同,且x,y本身没有多余的前导0

3. 差值求和 (abs.pas/c/cpp)

【问题描述】

小明最近学习了差的绝对值,|a-b|表示a-b的绝对值,若a-b>=0,则|a-b|=a-b;若a-b<0,则|a-b|=-(a-b)。

经过几次练习,小明已经熟练掌握了差的绝对值,现在他找来了N个整数,开始任意取出两个数,求差的绝对值,再将所有差的绝对值相加。例如N=4,有4个整数,分别是1,2,3,4。任取两个数有6种取法,|1-2|=1,|1-3|=2,|1-4|=3,|2-3|=1,|2-4|=2,|3-4|=1,它们的和就是10。

由于运算量太大,累坏了小明。请你写一个程序帮他计算一下吧。

2

【输入】

第一行一个整数n,表示有n个整数

第二行n个整数,表示小明写下的n个整数 【输出】

输出一个数,表示任意两数差的绝对值之和。

【输出输出样例1】 abs.in abs.out 3 3 1 2 【样例1解释】 |3-1|=2,|3-2|=1,|1-2|=1,答案为4 【输出输出样例2】 abs.in 4 1 2 3 4 4 abs.out 10 【数据范围】

对于40%的数据,n<=1000,0<=每个数<=1000

对于70%的数据,输入数据保证第二行的n个数字从小到大有序。 对于100%的数据,n<=100000,0<=每个数<=1,000,000,000

4. 取数游戏 (game.pas/c/cpp)

【问题描述】

小明正在玩一个取数游戏,首先他有N个整数,从中任取出4个整数a,b,c,d(每个数只能取一次),若满足a=b

小明想要知道,有多少种取数方案,可以取出胜利四元组。方案数可能很多,小明只要知道结果除1000000007的余数即可。

【输入】

第一行一个整数N,表示小明共有N个整数。

第二行N个整数,第i个数a[i],表示第i个整数。

【输出】

一个整数,表示满足条件的四元组取法,最终结果对1000000007取模。

3