快速幂

作者: dachengquan | 来源:发表于2020-08-04 20:29 被阅读0次

    快速幂用于快速求解a的b次方。
    将b分解为若干个指数不重复的2的次幂的和,c为0或1。
    a^b = a^{c_0*2^0+c_1*2^1+...+c_n*2^n}
    a^b = a^{c_0*2^0}*a^{c_1*2^1}*...*a^{c_n*2^n}
    其中a^{2^i}*a^{2^i} = a^{2^{i+1}}
    时间复杂度O(\log b)

    int ksm(int a,int b,int p){
        int res = 1 % p;
        while (b)
        {
            if (b & 1) res = (long long)res * a % p;
            a = (long long)a * a % p;
            b >>= 1;
        }
    }
    

    相关文章

      网友评论

          本文标题:快速幂

          本文链接:https://www.haomeiwen.com/subject/obxurktx.html