将指数转换为二进制,在进行操作
#include<bits/stdc++.h>
#define lom long long
using namespace std;
lom quick(lom a,lom b,lom c)
{
lom ans=1;
a%=c;
while(b)
{
if(b&1) ans=ans*a%c;
a=a*a%c;
b>>=1;
}
return ans%c;//防止ans与c相等的情况
}
int main()
{
lom a,b,c;
cin>>a>>b>>c;
cout<<a<<'^'<<b<<" mod "<<c<<'='<<quick(a,b,c);
return 0;
}