现在我想检查一下是否值
int a = pow(9.0,100);
int b = 81;
int c = 547;
当我使用a - b时,该值应该可以除以c而没有余数;
if( (a-b) % 547 == 0 )
cout << "Correct" << endl;
else
cout << "Wrong" << endl;
但输出总是出错,我看到了网站链接。答案应该是正确的。 链接可以引用这里的线程:How to calculate modulus of large numbers?
但是我的一个当做同余模时它涉及减号。所以不知道怎么写算法
最佳答案
9^100 大约是 10^95,所以它溢出了 int。你可以用普通的 int 来计算它,而不是计算 10^95 然后取模:
int c=1;
for(int i=0; i<100; ++i)
c = (c * 9) % 547;
所以c值总是在547以下。你也可以用二元幂法加速。
对于您的第二个问题 - 计算负值模值的最简单方法是使用以下代码执行此操作:
int mod(int a, int n) {
int res = a % n;
if (res < 0) res = res + n;
return res;
}
关于c++ - 检查 n 值的倍数作为模同余,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23928821/