核心思想
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;
}