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 }
时间: 2024-10-13 12:21:35