c++中A*B问题求解
Problem H:A*B
Time Limit:2000MS Memory Limit:65536K
Total Submit:45 Accepted:10
Case Time Limit:1000MS
Description
理查最近迷上了一种数, 这种数由前 n 个自然数拼接而成, 为方便起见, 记其为 P(n). 如: 前 4 个自然数拼接出来的数 P(n) = 1234. 理查发现这种数做乘法运算时有一些规律, 如:
P( 4 ) * P( 4 ) = 1522756
P( 4 ) * P( 5 ) = 15233730
P( 4 ) * P( 6 ) = 152344704
P( 4 ) * P( 7 ) = 1523455678
P( 4 ) * P( 8 ) = 15234566652
P( 4 ) * P( 9 ) = 152345677626
P( 4 ) * P( 10 ) = 15234567774940
P( 4 ) * P( 11 ) = 1523456777507574
P( 4 ) * P( 12 ) = 152345677750772208
现在的问题是这些数增长得很快. 譬如 P(50) = 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950. 因此, 当 n 比较大时要做这种数的乘运算有点困难. 理查需要你的帮忙.
问题要求对于给定的 n, m, 请计算乘积 P(n)*P(m).
Input
有多个测试用例. 每个测试用例占一行, 包含两个自然数 n, m (1 ≤ n,m < 10000). 你可以假定给出的 n,m 总是使得 P(n) 和 P(m) 的十进制数字个数接近而不超过 2 的某个整数次幂.
输入直至没有数据为止.
Output
对于每个测试用例, 请在一行上输出乘积 P(n)*P(m). 为了减少输出量, 只须输出乘积的一部分: 从个位数开始, 每 16 个十进制数字, 只输出其最低 4 位.
注意: 不能有多余的前导和后缀空格.
Sample Input
4 4
4 12
Sample Output
2756
152208