돌 게임을 가지고
링크 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을 ' ; } } }