题意
给出a,b,p三个数,求 对 取余的结果。
思路
我们在快速幂里加上取余运算就好了。
代码
#include<cstdio>
long long a,b,p;
long long calc(long long a,long long b,long long p)
{
long long r=1;//另外需要乘的
for (;b;b>>=1)//每次指数/2
{
if (b&1) r=r*a%p;//指数为奇数就要乘上一个剩下的
a=a*a%p;//根据a^i=a^(i/2)*a^(i/2)可以这样做
}
return r%p;
}
int main()
{
scanf("%lld%lld%lld",&a,&b,&p);
printf("%lld^%lld mod %lld=%lld",a,b,p,calc(a,b,p));
}