2019ICPC南京網路賽B super_log——擴充套件尤拉定理
和CF 906D的套路一樣
打表可知
x
=
a
a
a
.
.
.
(
m
o
d
m
)
x=a^{a^a...}(mod m)
x=aaa...(modm) 總共
b
b
b個
a
a
a,特判
a
=
1
a=1
a=1和
b
=
0
b=0
b=0的時候記得取模,然後沒了
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
unordered_map<int,ll>mp;
const int maxn=1e5+5;
int n,a,b,mo,q;
ll phi(int x){ //記得記搜 實在被卡常才上線性篩優化
if(mp[x])return mp[x];
int ans=x;int tmp=x;
for(int i=2;i*i<=x;++i){
if(x%i==0){
ans=ans/i*(i-1);
while(x%i==0)x/=i;
}
}
if(x>1)ans=ans/x*(x-1);
return mp[tmp]=ans;
}
ll Mod(ll x,ll m){ //擴充尤拉定理
return x>=m?(x%m+m):x;
}
ll mypow(ll a,ll b,ll p){
ll ans=1;
while(b){
if(b&1)ans=Mod(ans*a,p);//自定義取模
a=Mod(a*a,p);
b>>=1;
}
return ans;
}
ll solve(int l,ll m){
if(l==1||m==1)return Mod(a,m);
return mypow(a,solve(l-1,phi(m)),m);
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cin>>q;
for(int i=1;i<=q;++i){
cin>>a>>b>>mo;
if(a==1){ cout<<1%mo<<"\n";continue;}//這裡也得模
if(b==0){ cout<<1%mo<<"\n";continue;}//特判 記得取模
cout<<solve(b,mo)%mo<<"\n";//記得最後取模
}
return 0;
}
相關文章
- 湘潭大學四月月賽C題A+B(擴充套件歐幾里得定理)套件
- 擴充套件中國剩餘定理套件
- 擴充套件中國剩餘定理詳解套件
- POJ1061擴充套件歐幾里得定理套件
- 擴充套件Linux網路棧套件Linux
- BZOJ2839/LG10596 集合計數 題解(二項式反演+擴充套件尤拉定理)套件
- 尤拉函式、整除分塊和擴充套件歐幾里得函式套件
- 擴充套件歐幾里得的幾個定理以及證明套件
- 尤拉定理
- 擴充套件中國剩餘定理(EXCRT)學習筆記套件筆記
- hdu Yet another end of the world(擴充套件歐幾里得定理推論)套件
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- ACM-ICPC 2018 南京賽區網路預賽__B The writing on the wall【列舉】ACM
- ACM-ICPC 2018 南京賽區網路預賽__K The Great Nim Game【博弈論+費馬小定理+DP】ACMGAM
- ACM-ICPC 2018 南京賽區網路預賽__J. Sum【尤拉篩法+質因子分解+思維】ACM
- 擴充盧卡斯定理 / exlucas
- WCF擴充套件:行為擴充套件Behavior Extension套件
- 數論入門基礎(同餘定理/費馬小定理/擴充套件歐幾里德演算法/中國剩餘定理)套件演算法
- 使用基於策略的網路擴充套件KubernetesDeployments套件
- Airtel選擇Tejas進行光學網路擴充套件AI套件
- 【Kotlin】擴充套件屬性、擴充套件函式Kotlin套件函式
- B/S展現層貼子的擴充套件貼套件
- Sanic 擴充套件套件
- ORACLE 擴充套件Oracle套件
- 擴充套件工具套件
- 擴充套件歐幾里得套件
- DOM擴充套件套件
- 擴充套件ACL套件
- Lua擴充套件套件
- 照片擴充套件套件
- 擴充套件篇套件
- disable or 擴充套件套件
- 擴充套件表套件
- Mybatis擴充套件MyBatis套件
- JMeter 擴充套件開發:擴充套件 TCP 取樣器JMeter套件TCP
- 愛立信將網路開放功能擴充套件到邊緣套件
- 高擴充套件性的學習路線套件
- ?用Chrome擴充套件管理器, 管理你的擴充套件Chrome套件