Nghịch đảo modulo


Submit solution

Points: 2 (partial)
Time limit: 1.0s
Memory limit: 98M

Author:
Problem type
Allowed languages
Ada, Assembly, Awk, C, C++, C11, CLANG, CLANGX, Classical, COBOL, Coffee, CSC, D lang, DART, F95, FORTH, Fortrn, GAS32, GO, Haskell, Itercal, Java, kotlin, LEAN, LISP, LUA, MONOVB, Nasm, OCAML, Pascal, Perl, php, PIKE, prolog, Pypy, Python, Ruby 2, RUST, Scala, SCM, SED, SWIFT, TCL, TUR, V8JS, VB, ZIG

Cho 2 số nguyên không âm n và m hãy tìm số tự nhiên nhỏ nhất k sao cho n*k chia m dư 1 khi đó k được gọi là nghịch đảo modulo của n theo modul m

Input

Dòng đầu gồm số bộ test \(t (1 \leq t \leq 1000)\)

Các dòng tiếp theo gồm \(t\) dòng mỗi dòng chứa hai số tự nhiên n và m trong đó \((0 \leq n,m \leq 10^6)\)

Output

Với mỗi bộ test, nếu không tồn tại nghịch đảo đảo modulo của n theo modul m thì xuất ra 0 ngược lại thì xuất ra giá trị nghịch đảo modulo đó

Ví dụ

Input

5
17 7
18 8
6 13
9 16
5 0

Output

5
0
11
9
0
tichpx

Comments


  • 2
    TICHPX  commented on Nov. 19, 2019, 3:04 a.m.

    Gợi ý

    1. Có thể áp dụng định lý Fecma nhỏ

    2. Có thể dùng thuật chia Euclide mở rộng