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
题意:求ax≡1(mod m) 直接用逆元
#include<cstdio> #define LL long long int flag=0; int GCD(int a,int b,int &x,int &y) { if(b==0) { x=1; y=0; if(a==1) flag=1; return a; } int r=GCD(b,a%b,x,y); int tem=x; x=y; y=tem-a/b*y; return r; } int main() { int t; scanf("%d",&t); while(t--) { flag=0; int a,m; scanf("%d%d",&a,&m); int x,y; GCD(a,m,x,y); x=x%m; if(x<=0) //判断x的正负 x+=m; if(flag==0) printf("Not Exist\n"); else printf("%d\n",x); } return 0; }