일반적으로, 중국 잉여 정리

http://poj.org/problem?id=2891

문제의 의미 부여 K 그룹 : MOD (제수), A (나머지) (X)의 요건을 만족시킨다.

해결 방법 : 두 개의 방정식 합병.

https://blog.csdn.net/qq_34446253/article/details/52192786

// # <비트 / stdc ++. H> 포함
#INCLUDE <cstdio>
#INCLUDE <CString을>
#INCLUDE <cmath>
#INCLUDE <알고리즘>
사용법 #include <iostream>
#INCLUDE <알고리즘>
사용법 #include <iostream>
#INCLUDE <cstdio>
사용법 #include <문자열>
#INCLUDE <CString을>
#INCLUDE <STDIO.H>
#INCLUDE <큐>
#INCLUDE <적층>;
사용법 #include <지도>
#INCLUDE <설정>
사용법 #include <ctype.h>
사용법 #include <string.h>
#INCLUDE <벡터>
#DEFINE ME (X, Y)가 memset (X, Y는 sizeof (X))
#DEFINE SF (N)는 scanf ( "%의 D", N)
#DEFINE 렙 (I, n)에 대한이 (INT 난 = 0; I <N; I ++)
#DEFINE INF 0x3f3f3f3f
#DEFINE는 1000000007를 MOD
#DEFINE의 PI의 ACOS (-1)
네임 스페이스를 사용하여 표준;
긴 LL 긴 형식 정의를;
LL 광고 [100009], m [100009];
LL D, X, Y;

보이드 GCD (a LL, LL & D, LL 및 X, Y 및 LL ㄴ 것이다)
{
    경우 (b == 0)
    {
        X = 1;
        Y = 0;
        D = A;
    }
    그밖에{
        GCD (B, A %의 B, D, X, Y);
        LL의 t = X;
        X = Y;
        t = Y - (A / B) * (Y);
    }
}

LL CRTx (LL 않음)
{
    LL 광고 A1 = [0], N1 = m [0], (A2), (N2);
    위한 (INT 난 = 1; I <N; I ++)
    {
        A2 = 광고 [I], N2 = m [I];
        GCD (N1, N2, D, X, Y);
        경우 ((A1-A2)가 % d) -1을 리턴;
        LL LCM = N1 * N2 / D;
        LL U0 = ((X * (A1-A2) / d) % (N2 / d) + (N2 / d)) % (N2 / d);
        A1 = (A1 - U0 * N1) %의 LCM;
        N1 = LCM;
    }
    창 (A1 % N1 + N1)의 N1 %;
}

() 주요 int로
{
    / * # IFDEF ONLINE_JUDGE
    #그밖에
        freopen을 ( "D / C ++ / in.txt", "R"표준 입력);
        freopen을 ( "D / C ++ / out.txt", "w", 표준 출력);
    # ENDIF * /
    N LL;
    동안 (~는 scanf ( "%의 LLD", & N))
    {
        위한 (INT 난 = 0; I <N; I ++)
        {
            scanf와 ( "% LLD % LLD", m [i]는, 광고 [I]);
        }
        COUT CRTx << (N) << ENDL;
    }

    0을 반환;
}

추천

출처www.cnblogs.com/nonames/p/12153604.html