n=A%9973即n=A-A/9973*9973,设A=B*x,B*x-9973*y=n。。exgcd解之。。。

数论题,心好累。。。

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<queue>
 5 #include<algorithm>
 6 #define inc(i,l,r) for(i=l;i<=r;i++)
 7 #define dec(i,l,r) for(i=l;i>=r;i--)
 8 #define mem(a) memset(a,0,sizeof(a))
 9 #define inf 1e9
10 #define ll long long
11 #define succ(x) (1<<x)
12 using namespace std;
13 int read(){
14     int x=0,f=1;char ch=getchar();
15     while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
16     while(isdigit(ch))x=x*10+ch-'0',ch=getchar();
17     return x*f;
18 }
19 ll T,a,b,n,x,y;
20 void gcd(ll a,ll b,ll &x,ll &y){
21     if(b==0){
22         x=1;y=0;
23     }else{
24         gcd(b,a%b,y,x);
25         y-=(a/b)*x;
26     }
27 }
28 int main(){
29     T=read();b=9973;
30     while(T--){
31         n=read();a=read();
32         gcd(a,b,x,y);
33         x*=n;
34         printf("%d\n",(x%b+b)%b);
35     }
36     return 0;
37 }
View Code

 

posted on 2015-10-30 21:41  onlyRP  阅读(127)  评论(0编辑  收藏  举报