(a^b) mod c = ((a mod c)^b)mod c,对于数据较大选择快速幂取余算法,
如果b是偶数a^b=(a^2)^(b/2)=((a^2)^2)^((b/2)/2)
如果b是奇数a^b=a*(a^2)^(b/2)
代码:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
long long int a,b,c;
cin>>a>>b>>c;
long long int ans=1;
while(b)
{
if(b%2==1){
ans=(ans*a)%c;
}
b=b/2;
a=(a*a)%c;
}
cout<<ans%c<<endl;
return 0;
}
如果想不明白可以找两个例子手推一下