如果我们要求,如果我们利用传统
,那么时间复杂度将会达到
,如果我们将指数进行二进制分解可以得到
前面系数分别二进制的各位数,因此,我们可以通过快速幂算法大大减少大数幂运算的时间复杂度。代码如下:(
)时间复杂度为
#include <iostream>
//#include<string>
#include<cstdio>
using namespace std;
void qp(long m,long n)
{
long long ans=1,base=m;
while(n!=0)
{
if(n&1) ans*=base;
base*=base;
n=n>>1;
}
cout<<ans<<endl;
}
int main()
{
long m,n;
while(scanf("%ld %ld",&m,&n)!=EOF)
{
qp(m,n);
}
return 0;
}