【Tenka1 Programmer Contest 2017 F】ModularPowerEquation!!(欧拉定理)
来源:互联网 发布:淘宝外宣兼职违法吗 编辑:程序博客网 时间:2024/05/17 01:29
题目大意
输入A,M,找任意一个K ,使得
题解
欧拉定理
若n,a互质,则
证明:
令1~n中,与n互质的数为
令
- 性质1:所有
mi 中,任意两个都不关于n同余。
若存在mi≡mj(mod n)
则n|mi−mj ,n|a(xi−xj) ,∵n与a互质,xi−xj<n ,n 不整除a(xi−xj) ,矛盾。 - 性质2:所有
mi mod n 与n互质。
令mi=pn+r ,若r与n有公因子q,则mi 也一定有因子q,mi 与n 不互质
∵a与n互质,x_i与n互质,axi 不含n的任何因子,矛盾。
由以上性质得出
∴
缩小问题规模
∵
∴
找一个t,使得
∴
∴
然后问题变为求t,M缩小。
具体实现
当M=1时,K=1。
用
根据以下条件
得出
可用扩展欧几里得解出这个不定方程的x.
为保证得到正数,适当的把t扩大,加上几个
解出x后
代码
#include<cstdio>long long modpow(long long a,long long b,long long p){ long long ret=1; for(;b>0;b>>=1,a=(a*a)%p) if(b&1) ret=(ret*a)%p; return ret;}long long phi(long long n){ long long res=n,t=n; for(long long i=2;i*i<=t;i++) if(t%i==0) { res-=res/i; while(t%i==0) t/=i; } if(t>1) res-=res/t; return res;}long long gcd(long long a,long long b){ if(b==0) return a; return gcd(b,a%b);}long long exgcd(long long a,long long b,long long &x,long long &y){ if(b==0) {x=1;y=0;return a;} long long g; g=exgcd(b,a%b,y,x); y-=a/b*x; return g;}long long solve(long long A,long long M){ if(M==1) return 1; long long pM,At,d,t,x,y; pM=phi(M); d=gcd(M,pM); t=solve(A,d); At=modpow(A,t,M); exgcd(M/d,pM/d,x,y); x=x*(((t-At)%pM+pM)%pM)/d; x=((x%(pM/d))+pM/d)%(pM/d)+pM/d; return x*M+At;}int main(){ int Q; long long A,M; scanf("%d",&Q); while(Q--) { scanf("%lld%lld",&A,&M); printf("%lld\n",solve(A,M)); } return 0;}
阅读全文
2 0
- 【Tenka1 Programmer Contest 2017 F】ModularPowerEquation!!(欧拉定理)
- Tenka1 Programmer Contest
- Tenka1 Programmer Contest-D
- AtCoder. Tenka1 Programmer Contest C,D
- Atcoder Tenka1 Programmer Beginner Contest IntegerotS 【异或+思维】
- AtCoder Tenka1 Programmer Beginner Contest D IntegerotS 数学
- fzoj1759(欧拉定理)
- 费马小定理&&欧拉定理
- 欧拉定理——PowMod ( HDU 5728 )(2016 Multi-University Training Contest 1 1006)
- 威尔逊定理,费马小定理,欧拉定理
- poj3358数论(欧拉定理)
- POJ 3358 (欧拉定理)
- Mathematically Hard (欧拉定理)
- LA 3263 (欧拉定理)
- 欧拉定理
- 欧拉定理证明
- 欧拉定理
- 【数论】欧拉定理
- c++中的friend友元
- 【设计模式】-原型模式
- 344. Reverse String
- 每日一道算法题(7)
- jinfo_动态调整JVM参数(无需重启)(实践)
- 【Tenka1 Programmer Contest 2017 F】ModularPowerEquation!!(欧拉定理)
- 向数据库存储读取图片方法总结
- C++虚继承与虚函数
- <C++ Primer_5th>习题_3.16
- Jump Game II一道优化bfs题
- URAL 1011|Conductors|暴力
- <C++ Primer_5th>习题_3.17
- java序列化与反序列化(2)------jdk原生序列化机制Serializable
- 事务详解