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).
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.
For each test case, output the smallest positive x. If such x doesn't exist, output "Not Exist".
a-1≡x (mod m) 乘法逆元,实际上就是ax + by = 1,求x的最小正整数解。
直接套exgcd模板即可。
#include <iostream> using namespace std; int exgcd(int a,int b,int &x,int &y) { int ans,temp; if(b==0) { x=1; y=0; return a; } ans=exgcd(b,a%b,x,y); temp=x; x=y; y=temp-a/b*y; return ans; } int main() { int a,m,t; cin>>t; while(t--) { cin>>a>>m; int d,x,y; if(exgcd(a,m,x,y)==1) { while(x<=0) x+=m; cout<<x<<endl; } else cout<<"Not Exist"<<endl; } return 0; }
