/* *中国剩余定理:最小的x,x=a[i](mod m[i]) (1<=i<=k) */ ll China(ll *a, ll *m, int k) { ll M = 1, x, y, z, ret = 0; for (int i=1; i<=k; ++i) M *= m[i]; for (int i=1; i<=k; ++i) { ll w = M / m[i]; ex_GCD(w, m[i], x, y, z); ret = (ret + x*w*a[i]) % M; } return (ret + M) % M; }
/* *中国剩余定理:最小的x,x=a[i](% m[i]) (i<=n) */ int China(int k, int *a, int *m) { ll M = 1, x, y, ret = 0; for (int i=1; i<=n; ++i) { M *= m[i]; } for (int i=1; i<=n; ++i) { ll w = M / m[i]; ex_GCD (w, m[i], x, y); ret = (ret + x * w * a[i]) % M; } return (ret + M) % M; }