돌 빼 기 게임 (HDU 256) 피 폴 라 치 게임
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3818 Accepted Submission(s): 2279
Problem Description
한 무더기 의 돌 은 n 개가 있 는데, 두 사람 이 번갈아 가 며 가 져 간다. 선 취 자 는 첫 번 째 로 여러 개 를 가 져 갈 수 있 지만, 다 가 져 갈 수 는 없다. 이후 매번 가 져 온 돌 수 는 지난번 취 자 수의 2 배 를 초과 해 서 는 안 된다.이 긴 사람 이 이 깁 니 다. 먼저 이 긴 사람 은 "Second win" 을 출력 합 니 다. 먼저 이 긴 사람 은 "First win" 을 출력 합 니 다.
Input
여러 그룹 을 입력 하 십시오. 각 그룹의 첫 번 째 줄 은 2 < = n < 2 ^ 31. n = 0 으로 종료 합 니 다.
Output
선 취자 마이너스 출력 "Second win". 선 취자 승 출력 "First win".
샘플 출력 참조.
Sample Input
2
13
10000
0
Sample Output
Second win
Second win
First win
제목 대의: 돌 한 무더기, 두 사람 이 돌아 가면 서 가 져 가 마지막 자가 이 기 는 것 을 기억 하 라.돌 을 가 는 규칙 은 먼저 n 개의 돌 을 가 지 는 것 이지 만 한꺼번에 다 가 질 수 있 는 지, 그 다음 에 두 사람 이 돌 을 가 지 러 갈 때 매번 돌 을 가 는 개 수 는 전번 의 2 배 보다 많 지 않다.
문제 풀이 방향: 먼저 앞의 몇 가지 데 이 터 를 열거 한 결과 돌 개수 가 피 보 나 계 수 였 을 때 필 패 였 고 피 보 나 계 수 는 패 자 였 을 것 으로 추정 된다.
#include"iostream"
#include"cstdio"
using namespace std;
int fib[50];
int Fib(){
fib[0]=0;
fib[1]=1;
for(int i=2;i<48;i++){
fib[i]=fib[i-1]+fib[i-2];
}
return 0;
}
int main(){
int n;
Fib();
while(scanf("%d",&n)==1){
if(n==0)
break;
int flag=0;
for(int i=3;i<48;i++)
if(n==fib[i]){
flag=1;
break;
}
if(!flag)
printf("First win
");
else
printf("Second win
");
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
HDOJ 2176 돌 쌓 기 게임한 더미 에서 만 얻 을 수 있 습 니 다. 예 를 들 어 5 더미 5, 7, 8, 9, 10 선 취 자 는 이 길 수 있 습 니 다. 선 취 자 는 첫 번 째 로 얻 을 때 8 개 있 는 더미 에서 7 개 를 가 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.