快速幂

快速幂

\(b^q\) 的快速实现方法。

例如,\(3^5\)可以认为是\(3^4 \times 3^1\)。即指数\(5\)可被分解为\(2\)的指数和 \(5 = 1\times2^2 + 0\times2^1 + 1\times2^0\)

根据上述例子表示出来的性质,可以把\(q\)按照2进制展开,当第\(n\)位的数为\(1\)时, 则乘对应的\(b\)\(2^n\)次方(\(n\ge0\))。

以下为代码实现。

long long FastPower(long long b, long long q){
    long long ans = 1, base = b;
    while(q>0){
        if(q&1) ans *= base;
        base *= base;
        q >>= 1;
    }
    return ans;
}
posted @ 2021-03-16 23:49  1v7w  阅读(40)  评论(0编辑  收藏  举报