前几天我正在解决一个乘法编程问题,其中被乘数(a1,a2,... an)可以是1 <= ai <= 10 ^ 9。所以我的问题是如何将这些数字相乘,以便它们在C ++中始终保持在(很长的)范围内。
我应该使用任何类型的mod(例如10 ^ 9 + 7)但是没有提到是否使用它?
我使用普通乘法使用/不使用mod 10 ^ 9 + 7只是为了徒劳。 还尝试了俄罗斯农民增殖与mod 10 ^ 9 + 7
的运气long long mulmod(long long a, long long b)
{
long long res = 0; // Initialize result
a = a % mod;
while (b > 0)
{
// If b is odd, add 'a' to result
if (b % 2 == 1)
res = (res + a) % mod;
// Multiply 'a' with 2
a = (a * 2) % mod;
// Divide b by 2
b /= 2;
}
// Return result
return (res % mod);
}
仍然没有接受的解决方案。 : - (
编辑1:ll to long long。
答案 0 :(得分:0)
解决方案可能是