快速幂
快速幂
求 \(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;
}
不忘初心方得始终