モジュラー逆(拡張ユークリッド)

モジュラー逆

制限時間:  2秒の       メモリの制限:  65536キロバイト

整数のモジュラーモジュラ逆数   モジュロ  mは  整数であり  、X  ように  これは同等です  a-1x (mod m)ax≡1 (mod m)

入力

複数のテストケースがあります。入力の最初の行は、整数である  Tの  テストケースの数を示す≈2000。

各テストケースは、二つの整数0 <含ま   ≤1000および0 <  M  ≤1000。

出力

各テストケースのために、出力最小の正  のxそのような場合は  、xが  存在しない、出力が「存在しません」。

サンプル入力

3 
3 11 
4 12 
5 13

サンプル出力

4 
存在しませ
8
1の#include <iostreamの>
 2の#include <CStringの>
 3の#include <アルゴリズム>
 4の#include <地図>
 5  使って 名前空間STDを、
6  
7のtypedef 長い LL。
8  
9  int型T。
10  int型A、B、X、Y。
11  
12  INTの GDC(INT A、INT B){
 13      リターン Bの== 0:GDC(B、%のB)。
14  }
 15  
16  空隙 exgdc(INTint型 B、INT&X、INTY){
 17      場合(Bの== 0 ){
 18          X = 1 19          Y = 0 20          リターン;
21      }
 22      exgdc(B、%のB、X、Y)。
23      int型温度= X;
24      X = Y。
25      Y = TEMP-A / B * Y。
26  }
 27  
28  
29  INT メイン(){
 30の      IOS :: sync_with_stdio()。
31      一方(CIN >> T){
 32          ながら(t-- ){
 33              CIN >> A >> B。
34              INT GDC = GDC(B)
35              場合1!%のGDC = 0){COUT << " 存在しませ" << ENDL。引き続き;}
 36              exgdc(A、B、X、Y)。
37              INT RES = X *(1 / GDC)。
38              INT ANS = B / GDC。
39              であれば(ANS < 0)ANS = - ANS。
40             %=のRESのANS;
 41は、             IF(RESが<= 0 ;)= RES + ANS    // の正数であるトピック
42である              << << COUT RES ENDL;
 43である         }
 44である     }
 45      リターン 0 ;
 46れます }
コードの表示

 



おすすめ

転載: www.cnblogs.com/qq-1585047819/p/11332379.html