首页 > 其他 > 详细

快速幂

时间:2019-03-09 14:11:21      阅读:167      评论:0      收藏:0      [点我收藏+]

快速幂就是快速算底数的n次幂。其时间复杂度为 O(logN)。快速幂运算,可以看做是按位进行的一种取幂运算(二进制的伟大之处)。

  Eg:以2 的4次方为例:

 技术分享图片

从上面的式子中,我们可以看出来,当指数的某一位是0的时候,我们可以忽略掉这一位,当指数不为0的时候乘上我们累计的底数(乘的是2^2);

Code:

1 int qPow(int x, int n){
2     int ans = 1, base = x;
3     while(n > 0){
4         if(n & 1) ans *= base; // 指数该位不为0
5         base *= base;  // 累乘
6         n >>= 1;  // 右移一位,磨平最右边的那位数字。
7     }
8     return ans;
9 } 

在有的时候我们需要对产生的解进行取余,如过底数和指数都特别大呐?取余岂不是特别费事,这时候我们就需要运用快速幂取余公式

a * b% mod = ( ( a % mod ) * ( b % mod ) ) % mod ;

练习:HDU_1097

快速幂

原文:https://www.cnblogs.com/cgx249/p/10500435.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!