计算pow(a,b)时,当b的数字过大,运算用时就会非常的长,快速幂的目的是将时间复杂度为O(n)的幂计算优化为O(log n).
快速幂主要是通过将计算a的n次方的问题中的n用二进制表示,将其分割为更多的小部分来完成更小的任务。
例子:
标准代码:
long long binpow(long long a, long long b) {
long long res = 1;
while (b > 0) {
if (b & 1) res = res * a;
a = a * a;
b >>= 1;
}
return res;
}