快速幂模运算

上代码

 

#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;
}

 

posted @ 2019-04-04 19:12  李白莘莘学子  阅读(315)  评论(0编辑  收藏  举报