浙江2012年省赛J题 Modular Inverse

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浙江2012年省赛J题 Modular Inverse相关的知识,希望对你有一定的参考价值。

Time Limit: 2000MS   Memory Limit: 65535KB   64bit IO Format:

 Status

Description

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

3
3 11
4 12
5 13

Sample Output

4
Not Exist
8

Hint

Source

浙江2012年省赛J题
(a*x)%m=1 扩展欧几里得求ax+my=1  x>0的最小整数解 
 
 1 #include<iostream>
 2 #include<cstdio>
 3 using namespace std;
 4 #define ll __int64
 5 
 6 ll x, y;
 7 ll exgcd(ll a, ll b){
 8     if(b == 0){
 9         x = 1;
10         y = 0;
11         return a;
12     }
13     ll d = exgcd(b, a%b);
14     ll t = x;
15     x = y;
16     y = t-a/b*y;
17     return d;
18 }
19 
20 int main(){
21     ll a, b, T;
22     scanf("%I64d",&T);
23     while(T--){
24         scanf("%I64d%I64d",&a,&b);
25         if(b==1){
26             printf("1\n");
27             continue;
28         }
29         //cout<<a<<b<<endl;
30         //ll g = 0;
31         ll g = exgcd(a, b);
32         if(g == 1){
33             while(x < 0){
34                 x += b;
35                 y -= a;
36             }
37             printf("%I64d\n",x);
38         }
39         else
40             printf("Not Exist\n");
41     }
42     return 0;
43 }

 

以上是关于浙江2012年省赛J题 Modular Inverse的主要内容,如果未能解决你的问题,请参考以下文章

2018年省赛热身赛第4场

2016年省赛总结

2018年省赛热身赛第2场

每日蓝桥62一九年省赛Java组真题“组队”

第十二届蓝桥杯 2021年省赛真题 (Java 大学B组) 第一场 (更新中)

2019浙江ACM省赛——部分题目