快速幂运算顾名思义,就是快速算某个数的多少次幂。其时间复杂度为 O(log?N), 与朴素的O(N)相比效率有了极大的提高。
以下以求a的b次方来介绍
把b转换成二进制数。
该二进制数第i位的权为
例如
11的二进制是1011
11 = 2³×1 + 2²×0 + 2¹×1 + 2º×1
因此,我们将a¹¹转化为算
代码如下
int pow3(int a,int b) { intr=1,base=a; while(b!=0) { if(b&1) r*=base; base*=base; b>>=1; } return r; }
时间: 2024-09-29 23:33:30