码迷,mamicode.com
首页 > 其他好文 > 详细

快速幂

时间:2019-07-20 19:58:42      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:size   amp   mes   div   void   names   就是   code   ==   

    快速幂的原理是数在机器中是按二进制形式存储的, 比如3个5相乘,3(10) = 11(2) ,result  =  5(1*2的0次方) * 5(1*2的1次方)  =  5 * 25  =  125 .

 1 #define ll long long int    
 2 using namespace std;  
 3 ll m, n;                                     
 4 void powRapid() {                   //快速幂计算 
 5     res = pow(m, n);   
 6     ll res=1base=m;               //res:结果, base:基数   
 7     while(n != 0) {                          
 8          if(n&1 == 1) {             //每次取最末一位二进制数   
 9                res = res * base;     //当前位为 1 时,说明有数值   
10         }                            //base就是 m 的次方,第a位值为x   
11              base=base*base;      //则当前位的值 = x * base^1  base^2  base^4  base^8   ......   
12     n = n>>1;                      //读取完一位就移动一位       }       
13     cout<< res<< endl;            
14 }    
15 int main() {      
16     cin>> m>> n;      
17     powRapid();           
18      
19     return 0;  
20 }      
21    

快速幂

标签:size   amp   mes   div   void   names   就是   code   ==   

原文地址:https://www.cnblogs.com/Lunix-touch/p/11218970.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!