洛谷 P5091 【模板】欧拉定理

233

  • 题目:
  • 题意:
  • 分析:
  • 代码:


题目:

传送门


题意:

欧拉定理


分析:

板子不用谢


代码:

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

你可能感兴趣的:(欧拉定理)