快速幂

快速幂的原理是数在机器中是按二进制形式存储的, 比如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    
posted @ 2019-07-20 19:37  a最简单  阅读(241)  评论(0编辑  收藏  举报