扩展欧几里得算法模板题 zoj 3609
2015-03-14 21:55
441 查看
Modular Inverse
Time Limit: 2 Seconds
Memory Limit: 65536 KB
The modular modular multiplicative inverse of an integer a modulo
m is an integer x such that
Each test case contains two integers 0 < a ≤ 1000 and 0 < m ≤ 1000.
Time Limit: 2 Seconds
Memory Limit: 65536 KB
The modular modular multiplicative inverse of an integer a modulo
m is an integer x such that
a-1≡x (mod m). This is equivalent to
ax≡1 (mod m).
Input
There are multiple test cases. The first line of input is an integer T ≈ 2000 indicating the number of test cases.Each test case contains two integers 0 < a ≤ 1000 and 0 < m ≤ 1000.
Output
For each test case, output the smallest positive x. If such x doesn't exist, output "Not Exist".Sample Input
3 3 11 4 12 5 13
Sample Output
4 Not Exist 8
References
简单模板:/** ************************************ //考察知识点:扩展欧几里得算法模板; 求乘法逆元的代码段: int cal(int a,int b,int c) { int x,y; int gcd=e_gcd(a,b,x,y); if(c%gcd!=0) return -1; x*=c/gcd; b=abs(b); int ans=x%b; if(ans<=0) ans+=b; return ans; } 扩展欧几里德算法模板: int e_gcd(int a,int b,int &x,int &y) { if(b==0) { x=1; y=0; return a; } int ans=e_gcd(b,a%b,x,y); int temp=x; x=y; y=temp-a/b*y; return ans; } ***************************************/ #include<stdio.h> #include<stdlib.h> int e_gcd(int a,int b,int &x,int &y) { if(b==0) { x=1; y=0; return a; } int ans=e_gcd(b,a%b,x,y); int temp=x; x=y; y=temp-a/b*y; return ans; } int cal(int a,int b,int c) { int x,y; int gcd=e_gcd(a,b,x,y); if(c%gcd!=0) return -1; x*=c/gcd; b=abs(b); int ans=x%b; if(ans<=0) ans+=b; return ans; } int main() { int t,a,m; scanf("%d",&t); while(t--) { scanf("%d%d",&a,&m); int ans=cal(a,m,1); if(ans==-1) printf("Not Exist\n"); else printf("%d\n",ans); } return 0; }
相关文章推荐
- ZOJ 3609 Modular Inverse(扩展欧几里德求乘法逆元)
- 扩展欧几里得算法——模板整理
- 扩展欧几里得算法模板
- ZOJ - 3609 Modular Inverse (扩展欧几里德求乘法逆元)
- ZOJ - 3609 —— Modular Inverse 【乘法逆,扩展欧几里得】
- poj-1061-青蛙约会-扩展的欧几里得算法的模板题
- ZOJ 3609 Modular Inverse(扩展欧几里德)
- zoj 3609 Modular Inverse 求最小逆元 裸的的扩展欧几里得
- ZOJ 3609 Modular Inverse(扩展欧几里得求逆元)
- 扩展欧几里得算法模板(希望永远不要搞懂了)
- [模板] 扩展欧几里得算法详解
- ZOJ 3609 Modular Inverse 扩展欧几里得
- ZOJ 3609 Modular Inverse(扩展欧几里德)
- 扩展欧几里得算法(模板)
- Modular Inverse [ZOJ 3609]
- ZOJ-3609(Modular Inverse )(拓展欧几里得)
- ZOJ 1729 & ZOJ 2006(最小表示法模板题)
- HDU 2594 - Simpsons’ Hidden Talents(扩展kmp模板)
- 扩展欧几里得模板&逆元求法
- 欧几里得算法与扩展欧几里得算法模板