ZOJ-3609 Modular Inverse

    xiaoxiao2021-03-26  21

    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 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

    http://en.wikipedia.org/wiki/Modular_inverse
    Author:  WU, Zejun Contest:  The 9th Zhejiang Provincial Collegiate Programming Contest Submit     Status

    a-1x (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; }

    转载请注明原文地址: https://ju.6miu.com/read-660401.html

    最新回复(0)