1079, 중국 잉여 정리 (템플릿)

양의 정수 K는 일부 소수 K 모의 결과를 제공, 최소 K. 요구 조건을 충족 예를 들어, 2 K = 1 %이고, K % 3 = 2, K = 5 %에서 3. K의 적격 최소 = 23.
 

기입

라인 1 : 숫자 N은 숫자 1 프라임 아날로그 입력 나중에 나타낸다. (2 <= N <= 10 ) 
(2 개) - N + 1 개 라인, 각각의 P는 숫자 2 및 M이고, 공간에 의해 분리, P는 소수이고, M은 K % P.의 결과 (2 <= P <= 100 , 0 <= K <P)

수출

출력 작은 K. 자격 모든 데이터는 10 이하 K ^ 9이었다.

샘플 INPUT

3 
2 1 
3 2 
5 3

샘플 출력

23 개 

기본 사항 :

X ≡a1 (브이 M1) × ≡a2 (브이 m2) ... X ≡an (브이 MN);

상기 식에서, M1 · M2, M3 ....., 서로 소인 정수를 페어 MN

令 M = (M1 m2 * * * m3 .... MN);

MI = M / MI는, TI는 * 식 미 인 TI 용액 ≡1 (MOD MI)의

그런 다음, X는 정수를 갖는 용액, 용액 X = 합계 1 ~ N (AI * 미 * TI);

다음과 같이 인증 :

때문에 배수 이외의 미 = m / 마일 마일 모든 계수 = [시그마 X로 치환하는 경우 (N- ~. 1) * * AI 미 티가되도록 , 원래의 방정식이 성립

i는 단지이 수학 식에 기여하는 각 aiMiti으로 이해 될 수있는 다른 수식에 영향을 미치지

1 #INCLUDE <. 비트 / stdc ++ H>
 2  사용  스페이스 성병;
3 타입 정의  LL;
4 [버리는, 언 15 ,] BRR [ 15 ];
5  INT N;
(6)  LL의 X, Y;
7 LL 용 GDC (LL의 B, A LL) { 복귀 ㄴ == 0 A : GDC (B, A의 % B); }
 8  공극 exgdc을 (-1,11,11- 및 X, LL 및 A, B의 LL Y) {
 9      경우 (b의 == 0 ) {
 10          X = 1 , Y = 0 ; 반환 ;
(11)     }
 12      exgdc (B, A %의 B, X, Y);
13      LL = 임시의 X;
14      X = Y;
(15)      Y = 임시-A / B * Y;
16  }
 17  
18  
19  INT 의 main () {
 20      IOS :: sync_with_stdio ( 거짓 );
21      CIN >> N;
22      LL의 LCM = 1 ;
(23)      에 대한이 ( int로 I = 1 ; i가 N = <; 내가 ++ ) {
 24          CIN >> [I] >>, 언 BRR을 [I];
25          LCM * = 도착의 [I];
(26)     }
 27      LL 입술 = 0 ;
(28)      에 대한이 ( int로 I = 1 난 ++; i가 N = < {)
 29          exgdc (LCM / 도착 [I], 도착 [I], X, Y);
30          X = (X +, 언 [I]) % (도착 [I]);
31          입술 = (BRR 입술 + [I] * X * LCM / 도착 [I]);
32      }
 33      COUT << 입술 %의 LCM << ENDL;
34      반환  0 ;
35 }
코드보기

 

추천

출처www.cnblogs.com/qq-1585047819/p/11521372.html