快速幂

求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;
}

 

posted @ 2018-01-23 00:36  magicalzh  阅读(138)  评论(0)    收藏  举报