前置知识
用二进制表示数字的方法(需要熟练理解)
基本思想
快速幂的基本思想就是将运算进行”降幂”,再利用二进制数字合并的原理减少运算次数。
例如,计算a^b则需要不停计算a * a;同理,计算a * b则需要不停计算a+a。
#include<cstdio>
#include<iostream>
#define ll long long
using namespace std;
ll poww(ll a,ll b,ll p){
ll ans=1;
for(;b;b>>=1){
if(b&1)ans=(ll)ans*a%p;
a=(ll)a*a%p;
}
return ans%p;
}
int main(){
ll a,b,p;
cin>>a>>b>>p;
cout<<poww(a,b,p)<<endl;
return 0;
}