JAVA 快速幂 带MOD 纯模板
不是正经讲解,单纯记录模板
核心思想
7^11 二进制表示为 7^1011 = 7^1000 *7^10 *7^1 也就是7^1 * 7^2 * 7^8
所以我们不断计算自身为底的平方数,当末尾位为1时乘上结果。
代码
public long fastPow(long x, long n, long mod) {
long res = 1;
for (; n != 0; n >>= 1) { // 1011 -> 101 -> 10 -> 1 -> 0
if ((n & 1) != 0) { // 1011 末尾位为 1 res*7, 101 res*7*7
res = res * x % mod; //
}
x = x * x % mod; //不断计算自身的平方
}
return res;
}

浙公网安备 33010602011771号