洛谷_1226 快速幂||取余运算

题意

给出a,b,p三个数,求 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));
}

猜你喜欢

转载自blog.csdn.net/SSL_hzb/article/details/81623943