题意:
给你一组同余方程,并保证两两互质 求最小的满足方程的非负整数 X
X ≡ bi(mod ai)
..... .....
题解:
经典的中国剩余定理求解特殊的同余方程组。
我们可以构造这样的一组解:
令 M = ∏ ai,mi = M/ai
X‘ = ∑ (bi mi pi) (其中 pi mi ≡ 1(mod ai))
易知:X‘ 为方程的一组解
而 X 与 X‘ 属于同一个 mod M 剩余类,故有 X =(X mod M)
#include#include using namespace std; typedef long long ll; ll extended_euclid(ll a, ll b, ll &x, ll &y) { ll d; if(b == 0) {x = 1; y = 0; return a;} d = extended_euclid(b, a % b, y, x); y -= a / b * x; return d; } ll chinese_remainder(ll b[], ll w[], ll len) { ll i, d, x, y, m, n, ret; ret = 0; n = 1; for(i=0; i < len ;i++) n *= w[i]; for(i=0; i < len ;i++) { m = n / w[i]; d = extended_euclid(w[i], m, x, y); ret = (ret + y*m*b[i]) % n; } return (n + ret%n) % n; } ll yu[100],chu[100]; int main() { ll n; while(cin>>n) { for(ll i=0;i >chu[i]>>yu[i]; } ll ans=chinese_remainder(yu,chu,n); cout< <