快速计算整数x的n次幂
当n&(1<<i)==1时,ai=1;当n&(1<<i)==0时,ai=0。设乘法中每一项为m(i)^ai,则m(i)每一项为前一项的平方,首项为x,即m(i+1)=m(i)^2,m(0)=x。则x^n为ai为1时m(i)的值的乘积。
代码如下:
1 #include <bits/stdc++.h> 2 using namespace std; 3 long long QP(long long x,long long n) 4 { 5 long long z=1; 6 while(n) 7 { 8 if(n&1) 9 { 10 z*=x; 11 } 12 x*=x; 13 n=n>>1; 14 } 15 return z; 16 } 17 int main() 18 { 19 long long x,n; 20 cin>>x>>n; 21 cout<<QP(x,n)<<endl; 22 return 0; 23 }
原文:https://www.cnblogs.com/0--0/p/12811465.html