1. 程式人生 > >模板-快速冪

模板-快速冪

在這裡插入圖片描述

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