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