ZOJ-3609 Modular Inverse

来源:互联网 发布:java开发bi方向 编辑:程序博客网 时间:2024/06/10 03:24

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-1x (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

33 114 125 13

Sample Output

4Not Exist8

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




0 0
原创粉丝点击