快速幂

2020-08-04  本文已影响0人  dachengquan

快速幂用于快速求解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;
    }
}
上一篇下一篇

猜你喜欢

热点阅读