The modular modular multiplicative inverse of an integer a modulo m is an integer x such that . This is equivalent to . a-1≡x (mod m)
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.
OutputFor each test case, output the smallest positive x. If such x doesn't exist, output "Not Exist".
Sample Input3 3 11 4 12 5 13Sample Output
4 Not Exist 8
References
The meaning of the title: Find the inverse of a x
Idea: For knowledge of Euclid, take a look at this blog post and click to open the link
#include<iostream> #include<string> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; typedef long long ll; ll exgcd(ll a,ll b,ll &x, ll &y){ if(b==0){ x=1; y=0; return a; } ll r=exgcd(b,a%b,y,x); y-=x*(a/b); return r; } int main(){ int T; scanf("%d",&T); while(T--){ ll a,m; cin>>a>>m; ll x,y; ll r=exgcd(a,m,x,y); if(r==1){ while(x<=0){ x+=m/r; } cout<<x<<endl; } else cout<<"Not Exist"<<endl; } return 0; }