快速幂模运算
上代码
#include<iostream> #include<cstdio> using namespace std; #define ll long long ll a,b,c=1,p; int main(){//快 速 幂 mod 运算 scanf("%d%d%d",&a,&b,&p);//a^b(mod p) int a0=a; while(b>0) { if(b&1)c=a0*c%p;//&为与运算,用于判断指数最后一位是否为1,究其原理是因为任何数在电脑中都是二进制 a0*=a0; b/=2;//在二进制中去掉最后一位,如果想不出来可以用这样:b>>=1; } printf("%lld",c); return 0; }