核心思想
711 二进制表示为 71011 = 71000 *710 *71 也就是71 * 72 * 78
所以我们不断计算自身为底的平方数,当末尾位为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;
}
标签:101,res,long,71,mod,快速,位为
From: https://www.cnblogs.com/ganyq/p/18109102