思路:设(A/B)%9973 = K, 则A/B = k + 9973x (x未知), 因此A = kB + 9973xB,
又A%9973 = n, 所以kB%9973 = n, 故kB = n + 9973y (y未知)
故(k/n)B +(-y/n)*9973 = gcd(B,9973) = 1
扩展欧几里得 求出k/n, 再乘以个n,记得取模,就是answer了
代码:
#include <stdio.h>
#include <stdlib.h>
#define m 9973
void Extend_gcd(int a,int b,int &x,int &y)
{
if(b==0)
{
x=1,y=0;
return ;
}
Extend_gcd(b,a%b,x,y);
int r=x;
x=y;
y=r-(a/b)*y;
}
int main()
{
int n,b,t,x,y;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&b);
Extend_gcd(b,m,x,y);
x=(x%m+m)%m;
printf("%d\n",(x*n)%m);
}
return 0;
}