【发布时间】:2020-03-31 11:36:45
【问题描述】:
我正在尝试解决一个问题,我们必须输出给定数字 n^p 的最后一位。
int modularExponentiation(int n, long long p, int m){
if(p == 0) return 1;
if(p & 1)
return (n % m * modularExponentiation((n*n) % m, p / 2, m) % m) % m;//line 4
return modularExponentiation((n*n) % m, p / 2, m) % m;
}
在这个递归代码中,我们在这里通过在第 4 行应用模数来更改临时结果。这不会对最终答案带来任何变化吗?例如,如果在任何中间阶段答案是 81^4,在 81 处应用 %10 并将其替换为 1,它不会改变最终结果吗?
【问题讨论】:
标签: c++ number-theory modular-arithmetic