算法(一)
快速计算整数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)的值的乘积。
代码如下:
#include <bits/stdc++.h> using namespace std; long long QP(long long x,long long n) { long long z=1; while(n) { if(n&1) { z*=x; } x*=x; n=n>>1; } return z; } int main() { long long x,n; cin>>x>>n; cout<<QP(x,n)<<endl; return 0; }

浙公网安备 33010602011771号