어디 (POJ 2891, 중국 잉여 정리 계수 서로 소하지

중국 잉여 정리 프라임 계수는없는 경우
==의 케이 *의 GCD (기준 주요 도끼 +가 A, B), 어디에 여러 주와 최소

https://vjudge.net/problem/POJ-2891

사용법 #include <iostream> 
#INCLUDE <cstdio> 
#INCLUDE <큐> 
#INCLUDE <알고리즘> 
#INCLUDE <cmath> 
#INCLUDE <CString을>
 #DEFINE INF 2147483647
 #DEFINE N 1,000,010
 #DEFINE의 P (a) putchar (a)
 #DEFINE (나, A는, B)에 대한이 (긴 길이 난 =; 나는 = B를을 <; I ++) 용
 // 전쟁
 // 2019년 8월 8일 
사용  스페이스 성병;
 길이 T, N;
 길이 R [N], A [N], X, Y, GCD, 플래그;
무효   (  길이{X)
     길이 길이 (Y) = 1 ;  C = getchar가 (); X = 0 ;
    반면 (c < ' 0 ' || C> ' 9 ' ) { 경우 (c == ' - ' ) Y = - 1 ; C = getchar가 ();}
     동안 (c <= ' 9 ' && C> = ' 0 ' ) {(X) = (X << 1 ) + (X << 3 ) + C- ' 0 ' , C = getchar가 ()} 
    X * = Y;
 X) {
     경우 (X < 0 ) {P ( " - " ), X = - (X)}
     의 경우 (x> 9 ) O (X / 10 ); 
    P (X의 % 10 + ' 0 ' ); 
} 

공극 exgcd (  길이 A,  길이 B,  길이 및 X,  길이Y) {
     경우 (! {b) 
        X = 1 , Y는 = 0 ; GCD가 = 단계;
        반환; 
    } 
    exgcd (B, A %의 B, Y, X); 
    Y - = A / B * X; 
} 

{) (메인 체결 
    동안 (는 scanf ( " %의 LLD " , N)! = EOF) { 
        플래그 = 0 ; 
        (Ⅰ에 대해서는 1 , N)
             (R [I]) (a [I]); 
        (Ⅰ에 대해서는 2 , N) { 
            exgcd (R [ 1 ], R [i]를, X, Y);
            경우 ((a [I] -a [ 1 ]) %의 최대 공약수를 == 0 ) { 
                X * = (a [I] -a [ 1 ]) /GCD; 
                Y = R [I] / GCD; 
                X = (X %의 및 y + y를) %의 Y; 
                A [ 1 ] + = R [ 1 ] * X; 
                R [ 1 ] = R [ 1 ] * R [I]는 / GCD; 
            } 
            다른 { 
                O ( - 1 ), P ( " \ n을 ' ); 
                플래그 = 1 ;
                휴식 ; 
            } 
        } 
        경우 (! 플래그) 
            O (a [ 1 ]), P (' \ n을 ' ); 
    } 
    반환  0 ; 
}

 

추천

출처www.cnblogs.com/war1111/p/11323764.html