有道题目请教各位高手,限时1s,限内存128MB。
pascal吧
全部回复
仅看楼主
level 14
139457820 楼主
sum.pas
两个整数之间的“距离”被定义成对应位上的数字差值的绝对值之和.例如:4561 和3278的距离为 |4 – 3| + |5 - 2| + |6 - 7| + |1 - 8| = 12. 如果其中一个整数所有的位数较少,则数的高位补0.所以32和5678 的距离为 |0 - 5| + |0 - 6| + |3 - 7| + |2 - 8| = 21.
现在给你两个整数 A 和 B. 请计算区间 [A, B]中的所有数对的距离之和。
输入格式:A, B(1 ≤ A≤ B≤ 10^50000).
输出格式:
距离和 mod 1 000 000 007.
输入样例1:
1 5
输出样例1:
40
输入样例2:
288 291
输出样例2:
76
样例解释:
数对的距离分别为(288, 289) = 1, (288, 290) = 9, (288, 291) = 8, (289, 290) = 10, (289, 291) = 9, (290, 291) = 1,(289, 288) = 1, (290, 288) = 9, (291, 288) = 8, (290, 289) = 10, (291, 289) = 9, (291, 290) = 1所以总和为2 * (1 + 9 + 8 + 10 + 9 +1) = 76.
输入样例3:
1000000 10000000
输出样例3:
581093400
-------------------------------------------------------------------------------------------------------------------
老师的解析是f[n]=(x-y)*num[i-1]
x、y分别是两个数n位上的数字,num记录这个数位上重复的次数,答案是所有f[i]的和。
我不是很懂,最好贴出源代码。
2014年07月20日 10点07分 1
1