快速幂

来源:互联网 发布:淘宝账号无法开店 编辑:程序博客网 时间:2024/06/05 15:33

以下以求a的b次方来介绍

把b转换成二进制数。该二进制数第i位的权为

例如,11的二进制是1011,11 = 2³×1 + 2²×0 + 2¹×1 + 2º×1

因此,我们将a¹¹转化为算

代码实现:

int pow(int a,int b)

{

   int result=1;

   int base=a;

   while(b!=0)

    {

       if(b&1)

       {

           result=result*base;

       }

       base=base*base;

       b=b>>1;

    }

   return result;

}

0 0
原创粉丝点击