n = A % 9973 -> n = A - A / 9973 * 9973
设 x = A / B(题目所述,B|A) -> A = B * x
所以 B * x - A / 9973 * 9973 = n
设 y = A / 9973
则 B * x - 9973 * y = n
B 和 n 已知, gcd(B, 9973) == 1
所以可以求出 B * x + 9973 *(- y) == 1 时的 x 的解
然后 x 再 * n,最后求 (x % 9973 + 9973) % 9973 即为答案
——代码
1 #include <cstdio> 2 3 inline void exgcd(int a, int b, int &x, int &y) 4 { 5 if(!b){x = 1, y = 0; return;} 6 exgcd(b, a % b, y, x); 7 y -= a / b * x; 8 } 9 10 int main() 11 { 12 int n, b, x, y, T; 13 scanf("%d", &T); 14 while(T--) 15 { 16 scanf("%d %d", &n, &b); 17 exgcd(b, 9973, x, y); 18 x *= n; 19 printf("%d ", (x % 9973 + 9973) % 9973); 20 } 21 return 0; 22 }