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을 반환; }