求a的n次幂,传统方式需要O(n)的复杂度,使用快速幂,可以减小复杂度到O(logn)。
具体算法为使用结合律快速求幂。
例如:220 = 216 * 24
22 = 21 * 21
24 = 22 * 22
以此类推。
代码如下:
int pow(int a,int n) { int ans=1; while(n) { if(n&1) ans *=a; a *= a; n >>= 1; } return ans; }