求解x ≡ b[](mod w[])中的x值
1 #include <stdio.h> 2 int ext_euclid(int a,int b,int &x,int &y) //求gcd(a,b)=ax+by 3 { 4 int t,d; 5 if (b==0) {x=1;y=0;return a;} 6 d=ext_euclid(b,a %b,x,y); 7 t=x; 8 x=y; 9 y=t-a/b*y; 10 return d; 11 } 12 13 14 int China(int B[],int W[],int k) 15 { 16 int i; 17 int d,x,y,a=0,m,n=1; 18 for (i=0;i<k;i++) 19 n*=W[i]; 20 for (i=0;i<k;i++) 21 { 22 m=n/W[i]; 23 d=ext_euclid(W[i],m,x,y); 24 a=(a+y*m*B[i])%n; 25 } 26 if (a>0) return a; 27 else return(a+n); 28 } 29 int main(){ 30 int len,B[100],W[100]; 31 scanf("%d",&len); 32 for(int i = 0; i < len; i++) 33 scanf("%d%d",&B[i],&W[i]); 34 int ans = China(B,W,len); 35 printf("%d ",ans); 36 return 0; 37 }