快速幂

Posted Asimple

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速幂相关的知识,希望对你有一定的参考价值。

    快速幂的原理是数在机器中是按二进制形式存储的, 比如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    

以上是关于快速幂的主要内容,如果未能解决你的问题,请参考以下文章

矩阵快速幂

快速幂

快速幂

快速幂乘法&快速幂取余

快速幂和慢速乘

快速幂解法