中国剩余定理

假设有方程组x = ai(mod mi), 其中所有的mi两两互素, 另M为所有mi的乘积, wi = M / mi, 则gcd(wi, mi) = 1, 用扩展gcd可以得到wipi + miqi = 1的解, 然后ei = wipi, 则方程组等价于

x = e1a1 + e2a2 + .... + enan (mod M), 即在模M下方程组有唯一解。

View Code
 1  ll china(ll n, ll *a, ll *m)
 2  {
 3      ll M = 1, d, y, x = 0;
 4      for(int i = 0; i < n; ++i) M *= m[i];
 5      for(int i = 0; i < n; ++i)
 6      {
 7          ll w = M / m[i];
 8          gcd(m[i], w, d, d, y);
 9          x = (x + y * w * a[i]) % M;
10      }
11      return (x % M + M) % M;
12  }

 

posted @ 2013-01-31 16:29  ACSeed  Views(351)  Comments(0)    收藏  举报