ZOJ-3609-Modular Inverse【同余定理】【9th浙江省赛】

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

题目链接:ZOJ-3609

题目大意:问是否能找出一个x满足,ax≡1 (mod m)

题目思路:特判当m=1的时候,输出1就可以了(WA了一发因为这里输出0);其余情况,公式可变成ax%m = 1,暴力x就可以了。

以下是代码:

#include <vector>
#include <map>
#include <set>
#include <algorithm>
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <string>
#include <cstring>
using namespace std;

int main(){
    int t;
    cin >> t;
    while(t--)
    {
        int a,m;
        scanf("%d%d",&a,&m);
        if (m == 1)
        {
            cout << 1 << endl;
            continue;
        }
        int ans = 0;
        for (int x = 1; x <= 1000; x++)
        {
            if (a * x % m == 1)
            {
                ans = x;
                break;
            }
        }
        if (ans == 0) cout << "Not Exist\n";
        else cout << ans << endl;
    }
    return 0;
}

你可能感兴趣的:(同余定理,ZOJ-3609)