题意:http://www.lightoj.com/volume_showproblem.php?problem=1319
就是x%a[i]=b[i] 求x的值
讲解:http://www.cnblogs.com/fu3638/p/7455137.html
#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<queue> #include<map> #include<vector> #include<math.h> #include<string> using namespace std; #define INF 0x3f3f3f3f #define LL long long #define N 10006 #define Lson rood<<1 #define Rson rood<<1|1 int a[N],b[N],n; void exgcd(LL a,LL b,LL &d,LL &x,LL &y) { if(!b){ d=a;///d为最大公约数 x=1;y=0; } else { exgcd(b,a%b,d,y,x); y-=(a/b)*x; } } LL CRT() { LL M = 1; for(int i=0; i<n; i++) M*=a[i]; LL ans=0; for(int i=0; i<n; i++) { LL x,y,Mi,d; Mi=M/a[i]; exgcd(Mi,a[i],d,x,y); ans=(ans+b[i]*Mi*x)%M; } if(ans<0) ans+=M; return ans; } int main() { int T,t=1; scanf("%d",&T); while(T--) { scanf("%d",&n); for(int i=0; i<n; i++) scanf("%d%d",&a[i],&b[i]); printf("Case %d: %lld ",t++,CRT()); } return 0; }