朽木裂,雷霆惊,丛林木马怒冲天。
众所周知,如果给你两个数
要你计算
的值,你就知道要这么做:把每一位相乘并且乘上它们的
然后相加,其中
表示对应数位的幂次。
有一次,可怜的 ZM 不小心把“相乘”中的所有乘法运算都算成了加法,她想让你帮忙算算,这样算出来的结果是多少?
朽木裂,雷霆惊,丛林木马怒冲天。
全文第一行输入一个整数,表示数据组数。
每行输入两个正整数,表示两个因数。
数据保证,其中
表示两个数的位数。
每行输出一个数表示你计算出的答案,为方便输出,你只需要输出最终结果对取模后的值即可。
4 12 13 123 456 1314520 5201314 998244353 100000007
50 1737 45610838 900000063
对于样例 #1:把每一位拆开并且相加,每一个和统计出来:。
对于样例 #2:它们的和是:。
long[] a = in.nextBigInteger(MOD);
long[] b = in.nextBigInteger(MOD);
long ans = a[0] * b[1] + a[1] * b[0];
sb.append(ans % MOD).append('\n'); private long[] nextBigInteger(long mod) {
long[] n = new long[2]; // 返回的结果有两个数
if (buf[i] < '0') i++; // 跳过空格和换行
while (buf[i] >= '0') {
n[0] = (n[0] << 3) + (n[0] << 1) + (buf[i++] ^ '0'); // n*10+digit
n[0] %= mod; // n[0]代表原值取模的结果
n[1]++; // n[1]代表位数
}
return n;
}