题目
题解
b&1表示b在二进制下的最低位。
代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int inf=0x7fffffff;
inline ll quick(ll a,ll b,ll p) //(a^b) mod p
{
ll ans=1;
for( ;b;b>>=1)
{
if(b&1) ans=ans*a%p;
a=a*a%p;
}
return ans%p; //如果b=0,p=1,不加%p会错
}
int main()
{
ll a,b,p;
scanf("%lld%lld%lld",&a,&b,&p);
printf("%lld^%lld mod %lld=%lld",a,b,p,quick(a,b,p));
return 0;
}