ZOJ 3609 Modular Inverse
原创
©著作权归作者所有:来自51CTO博客作者qq636b7aec0b3f1的原创作品,请联系作者获取转载授权,否则将追究法律责任
Description
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 toax≡1 (mod m)
.
Input
There are multiple test cases. The first line of input is an integer T
Each test case contains two integers 0 < a ≤ 1000 and 0 < m
Output
For each test case, output the smallest positive x. If such x
Sample Input
Sample Output
4
Not Exist
8
References
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<set>
#include<ctime>
#include<vector>
#include<cmath>
#include<algorithm>
#include<map>
#define ll long long
using namespace std;
const int maxn = 1e5 + 10;
int T, n, m;
void egcd(int a, int b, int &x, int &y)
{
if (b == 0){ x = 1, y = 0; return; }
egcd(b, a % b, x, y);
long long t = x;
x = y, y = t - a / b * y;
}
int main()
{
scanf("%d", &T);
while (T--)
{
scanf("%d%d", &n, &m);
if (m == 1)
{
printf("1\n");
continue;
}
int x, y;
egcd(n, m, x, y);
x = (x % m + m) % m;
if (n*x%m == 1)printf("%d\n", x);
else printf("Not Exist\n");
}
return 0;
}