Codeforces 라운드 # 629 (사업부. 3)

Codeforces 라운드 # 629 (사업부. 3)

A. 정제 문제

출석 문제.

#INCLUDE <비트 / stdc ++ H.>
 사용  스페이스 성병; 
형식 정의를 오래  오래 LL;
무효화 () {해결 
    CIN, A, B LL 사항 >> >> B 단계;
    경우 (a %의 B == 0 ) COUT << " 0 \ n ' ;
    다른 COUT << B 형 * (A / B + 1 ) -a << " \ n ' ; 
} 
INT 의 main () 
{ 
    INT t, CIN >> t;
    반면 (t-- ) 
        ) (해결; 
    반환  0 ; 
}
코드보기

B. K 번째 아름 다운 문자열

B은 산술 서열 랭킹 개의 인접하는 차이의 제 1 발견 후 이동.

#INCLUDE <비트 / stdc ++ H.>
 사용  스페이스 성병;
보이드 () {해결
     INT N, K, N CIN >> >> K;
    INT의 L = N- (2) ;
    INT의 합 = 1 스텝 = 1 ;
    반면 (+ 합 공정 <= K) { 
        합계 + = ++ 단계 ;
        - L; 
    } 
    K - = 합;
    문자열 S = 문자열 (N, ' ' ); 
    S [1] = S [N- 1 -k = ' B ' ;
    COUT << S << " \ n ' ; 
} 
INT 의 main () 
{ 
    INT t, CIN >> t;
    반면 (t-- ) 
        ) (해결; 
    반환  0 ; 
}
코드보기

C. 삼항 XOR

큰 수는 때 더 이상 이견을.

#INCLUDE <비트 / stdc ++ H.>
 사용  스페이스 성병;
무효화 () {해결
     INT N; CIN >> N;
    문자열 의; CIN은 >> 이야;
    문자열 S1, S2;
    부울 플래그 = 진정한 ;
     ( C : (S)) {
         경우 (c == ' 2 ' ) {
             경우 (플래그) { 
                S1 + = ' 1 ' ; 
                S2 + = ' 1 ' ; 
            } 다른 {
                S1 + = ' 0 ' ; 
                S2 + = ' 2 ' ; 
            } 
        } 다른  경우 (c == ' 1 ' ) {
             경우 (플래그) { 
                S1 + = ' 1 ' ; 
                S2 + = ' 0 ' ; 
                플래그 = 거짓 ; 
            } 다른 { 
                S1 + = ' 0 ' ;
                S2 + = ' 1 ' ; 
            } 
        } { 
            S1 + = ' 0 ' ; 
            S2 + = ' 0 ' ; 
        } 
    } 
    COUT << S1 << " \ n " << S2 << " \ n ' ; 
} 
INT 의 main () 
{ 
    INT t, CIN >> t;
    반면 (t-- ) 
        ) (해결; 
    반환  0 ;
코드보기

D. 회전 목마

토론의 포인트.

#INCLUDE <비트 / stdc ++ H.>
 사용  스페이스 성병;
무효화 () {해결
     INT N; CIN >> N;
    int로 A [N]을;  ( INT 및 I : a) >> CIN I;
    INT의 입술 [N] = {};
    bool에 동일한 =를 ;
    위한 ( INT 난 = 1 ; N I <; I ++) 경우 (a [I] = A [I-! 1 ]) 동일한 = 거짓 ;
    경우 (동일) { 
        채우기 (입술, 입술 + N, 1 ); 
    } 다른  경우 (N %의 2== 0 ) {
         위해은 ( INT는 전 = 0 ; 나는 <N; I ++) 입술 [I] = (I & 1 ? 1 : 2 ); 
    } 다른 {
         위해은 ( INT는 전 = 0 ; I <N; I ++ ) {
             경우 (a [I] == A [(I + 1 ) %의 N]) {
                  ( INT J = I- 1 ; J> = 0 ; j--) 입술 [J] = (j는 1 ? 1 : 2 );
                 ( INT J = I + 2; J <N; ++ J) 입술 [J] = (j는 1 ? 2 : 1 ); 
                입술 [I] = 입술 [(I + 1 ) %의 N] = (I & 1 ? 1 : 2 );
                휴식 ; 
            } 
        } 
    } 
    경우 (입술 [ 0 ] == 0 ) { 
        입술 [ 0 ] = 3 ;
        위한 ( INT 난 = 1 ; N I <; I ++) 입술 [I] = (I & 1 ? 1 : 2 ); 
    } 
    cout을<< * max_element (입술, 입술 + N) << " \ n ' ;
    위한 ( INT 난 = 0 ; I <N; I ++) COUT << 입술 [I] << " \ n " [내가 N- == 1 ]; 
} 
INT 의 main () 
{ 
    INT t, CIN >> t;
    반면 (t-- ) 
        ) (해결; 
    반환  0 ; 
}
코드보기

 

추천

출처www.cnblogs.com/Kanoon/p/12578790.html