#include <iostream>
using namespace std;
int main(){
int result(int,int);
int t;
int n,b;
cin>>t;
while(t>0){
cin>>n>>b;
printf("%d\n",result(n,b));
t--;
}
}
void gcd(int a,int b,int &d,int &x,int &y){
if(!b){
d=a;x=1;y=0;
}
else{
gcd(b,a%b,d,y,x);
y-=x*(a/b);
}
}//扩展欧几里德算法
int result(int n,int b){
int d=1;
int x=0,y=0;
gcd(b,9973,d,x,y);
if(x<0){
x+=9973;//x可能小于0
}
x*=n;
return x%9973;
}
数论相关的题 主要的关键还是在于扩展欧几里德算法 但是还是没有理解啊~
思路主要就是如何变换成ax+by=gcd(a,b)的标准式
大部分参考 http://blog.csdn.net/liuchang54/article/details/44065651