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;
    }
posted @ 2024-04-01 18:14  Shie1d  阅读(30)  评论(0)    收藏  举报