因为有模运算公式:
(a^b)%m == (a%m ^ b)%m;
所以对快速幂取模为:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll qpow(ll a,ll b,ll m){
if(a>m) a%=m;
ll ans=1;
while(b){
if(b&1)
ans= ans*a%m;
a=a*a%m;
b>>=1;
}
return ans%m;
}
int main(){
int a,b,k;
cin>>a>>b>>k;
printf("%d^%d mod %d=%d",a,b,k,qpow(a,b,k));
return 0;
}