hdu 1576

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
",(x%b+b)%b);
35     }
36     return 0;
37 }
View Code
原文地址:https://www.cnblogs.com/onlyRP/p/4924440.html