题目:
题意:
欧拉定理
分析:
板子不用谢
代码:
#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<cmath>
#define LL long long
#define _LZX Mu
using namespace std;
inline LL read() {
LL d=0,f=1;char s=getchar();
while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();}
while(s>='0'&&s<='9'){d=d*10+s-'0';s=getchar();}
return d*f;
}
int main()
{
LL a=read(),LZX=read();
LL phi=LZX,t=LZX;
for(LL i=2;i*i<=LZX;i++)
if(!(t%i)) {phi-=phi/i;while(!(t%i)) t/=i;}
if(t>1) phi-=phi/t;
char c;
while(!isdigit(c=getchar()));
LL b=0,tf=0;
for(;isdigit(c);c=getchar())
{
b=b*10+c-'0';
if(b>=phi) tf=1,b%=phi;
}
if(tf) b+=phi;
LL ans=1;
for(LL i=20;i>=0;i--)
{
(ans*=ans)%=LZX;
if(b&(1<<i)) (ans*=a)%=LZX;
}
cout<<ans;
return 0;
}