快速幂
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=1, base=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
以上是关于快速幂的主要内容,如果未能解决你的问题,请参考以下文章