P5091欧拉定理
#include<bits/stdc++.h> using namespace std; int a,m; long long b; int flag=0;char c; int main() { cin>>a>>m;a=a%m; int tp=m,phi=m; for(int i=2;i<=sqrt(m);i++) if(tp%i==0) { phi=phi/i*(i-1); while(tp%i==0)tp/=i; }if(tp>1)phi=phi/tp*(tp-1); while (!isdigit(c=getchar())); for (;isdigit(c);c=getchar()) { b=b*10+c-'0'; if (b>=phi) { flag=true; b%=phi; } } if (flag)b+=phi; long long ans=1; for(int i=1;i<=b;i++) ans=(ans*a)%m; cout<<ans; }