Feibolaqi 게임 이론

돌 게임을 가지고

링크   http://acm.hdu.edu.cn/showproblem.php?pid=2516

시간 제한 : 2000/1000 MS (자바 / 기타) 메모리 제한 : 32,768분의 32,768 K (자바 / 기타)
총 제출 (들) : 10,199 허용 제출 (들) : 6177

문제 설명

1은 n 개의 돌을 쌓아, 그들은 교대로. 1 첫번째 즐긴다는 더 이상 걸릴 수 있지만 모든이 완료 걸릴. 각 돌의 수는 마지막 부속 촬영 한 수의 두 배를 초과 할 수 없습니다 복용 후. 완전한 승리를 가져 가라. 먼저 그 부정적인 출력을 "두 번째 승리를"가라. 먼저 테이크 출력 "첫 승리를"승리.
 입력
입력 복수의 세트. 각 그룹의 첫 번째 행은 2 <= N <2 ^ 31 N = 0 종료.
 산출
첫 즐긴다 "두 번째 승리"의 음의 출력은. 첫 번째 걸릴. 출력 "첫 승리를"승리 
샘플 출력을 참조.
 샘플 입력
2 13 0 10000
 샘플 출력
두 번째 승리는 두 번째로 첫 승리를 승리
아이디어 : 1에서 n은 승리의 수 Feibolaqi FLAC 일 때 법을 발견, 돌의 수를 열거하거나 승리를 얻을 수 있습니다
         타입 int 배열 배열 대신 변수 있도록 개방 후크 울리기되므로
다음과 같이 코드입니다 :
사용법 #include <iostream> 
#INCLUDE <cstdio>
 사용  스페이스 성병;
#DEFINE가 긴 긴 INT 줄게
 INT 의 main () 
{ 
    INT에 해당하는 단계;
    반면 (는 scanf ( " %의 D ' , N) && N) 
    { 
        INT ans1 = 2 , ans2 = 3 ;
        경우 (N 개의 == 2 || N == 3 ) 
        { 
            COUT << " 둘째 승리 " << " \ n을 ' ;
        
            부울 플래그 = 진정한 ;
             (n은> ans1) 
            { 
                경우 (N + == ans1 ans2) { 
                    COUT << " 둘째 승리 " << " \ n을 ' ;   
                                        플래그 = 거짓 ; 휴식 ; 
                } 
                INT의 임시 =의 ans1; 
                ans1 = ans2; ans2 온도 = + ans2; 
            } 
            경우 (플래그) 
                COUT << " 첫 승 "<< ' \ n을 ' ; 
        } 
    } 
}

 

추천

출처www.cnblogs.com/1911087165zzx/p/11440147.html