我知道 (a*b)%m
等于 ((a%m)*(b%m))%m
?
但是如何计算a%(m*m)
呢?
最佳答案
我们需要在不引起整数溢出的情况下计算a%(m*m)
。
long long int a, m, sqrt_a, ans;
sqrt_a = sqrt(a);
if (sqrt_a < m) {
ans = a; // since "m > sqrt_a" then a%(m*m) will be "a"
}
else {
ans = a % (m*m); // since "m <= sqrt_a" then m*m won't cause overflow
}
关于c++ - 如何在没有整数溢出的情况下找到 n%(k*k)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57331487/