小学生程序设计比赛练习题
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