快速冪

athenanevergiveup發表於2024-04-01

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

相關文章