【模板】擴展歐拉定理
阿新 • • 發佈:2019-03-22
getch == mes clas using pan i++ turn 模板
題目大意:求\[a^b\ mod \ m\]
題解:
代碼如下
#include <bits/stdc++.h> using namespace std; typedef long long ll; ll a,m,phi; ll read(){ ll x=0,f=0;char ch; do{ch=getchar();}while(!isdigit(ch)); do{ x=x*10+ch-'0';ch=getchar(); if(x>=phi)f=1; x%=phi; }while(isdigit(ch)); return f?x+phi:x; } ll calc(ll n){ int ans=n; for(int i=2;i<=sqrt(n);i++) if(n%i==0){ ans=ans/i*(i-1); while(n%i==0)n/=i; } if(n>1)ans=ans/n*(n-1); return ans; } ll fpow(ll n,ll b,ll c){ ll res=1%c; for(;b;b>>=1,n=n*n%c)if(b&1)res=res*n%c; return res; } int main(){ scanf("%d%d",&a,&m); phi=calc(m); ll b=read(); printf("%lld\n",fpow(a,b,m)); return 0; }
【模板】擴展歐拉定理