扩展欧拉定理降幂

Posted thusloop

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了扩展欧拉定理降幂相关的知识,希望对你有一定的参考价值。

【模板】扩展欧拉定理

//#pragma GCC optimize(2)
//#pragma GCC optimize(3,"Ofast","inline")
#include<bits/stdc++.h>
#define int long long
#define fi first
#define se second
#define pb push_back
#define pii pair<int,int>
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
int getphi(int n)
{
	int ans=n;
	for(int i=2; i*i<=n; i++)
	{
		if(n%i==0)
		{
			ans=ans/i*(i-1);
			while(n%i==0)n=n/i;
		}
	}
	if(n>1)ans=ans/n*(n-1);
	return ans;
}
int qpow(int a,int b,int mod)
{
	int ans=1;
	a=a%mod;
	while(b)
	{
		if(b&1)ans=ans*a%mod;
		a=a*a%mod;
		b=b>>1;
	}
	return ans%mod;
}
signed main()
{
	int a,m;
	string b;
	cin>>a>>m;
	cin>>b;
	int c=0;
	int phi=getphi(m);
	bool fg=0;
	for(int i=0; i<b.size(); i++)
	{
		c=c*10+b[i]-'0';
		if(c>=phi)fg=1;//  >=时要加上phi 
		c=c%phi;
	}
	int ans=0;
	if(fg)ans=qpow(a,c+phi,m);
	else ans=qpow(a,c,m);
	cout<<ans<<"\\n";
}

以上是关于扩展欧拉定理降幂的主要内容,如果未能解决你的问题,请参考以下文章

欧拉降幂欧拉定理子序列权值乘积

欧拉定理拓展欧拉定理及其应用(欧拉降幂法)

《夜深人静写算法》数论篇 - (17) 扩展欧拉定理

欧拉函数&欧拉定理&降幂 总结

[数学][欧拉降幂定理]Exponial

[数学][欧拉降幂定理]Exponial