模板-快速幂

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
long long b,a,p,k,ans=1,c;
int main()
{
    scanf("%d%d%d",&b,&p,&k);
    a=b;c=p;
    while(p>0)//快速幂
    {
        if(p%2!=0)//也可以 if(p$1)
            ans=ans*b%k;//如果p为单数,乘到ans里面去,然后取模
        b=b*b%k;//每次运算都取模
        p=p>>1;    //用位运算除2,可能会快一点
    }
    printf("%d^%d mod %d=%d",a,c,k,ans);//输出
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_43126361/article/details/83753100