HDU 2516 돌 빼 기 게임 (바 시 게임)
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2524 Accepted Submission(s): 1443
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
제목 의 뜻 이 명확 하 다. 이 문제 도 PN 그림 에서 착안 하여 다음 과 같다.
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20……
p p n p n n p n n n n p n n n n n n n……
위의 PN 그림 은 쉽게 그 릴 수 있 으 며 필 패 상 태 는 2, 3, 5, 8, 13 이다.사실 나 는 21 시의 상 태 를 그리 지 않 았 다. 필 패 상태 서열 이 피 보 나 절 수열 인 것 을 보 았 기 때문에 필 패 상태 가 피 보 나 치 에 부합 한다 고 직접 추측 하고 제출 한 후에 AC 가 되 었 다.
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <climits>
using namespace std;
int a,b;
int main(){
//freopen("in.txt","r",stdin);
//(author : CSDN iaccepted)
int n,ts;
bool mark;
while(scanf("%d",&n) && n){
a = 2,b = 3;
mark = false;
while(a<=n){
if(a==n || b==n){
mark = true;
break;
}
ts = (a + b);
a = b;
b = ts;
}
if(mark){
printf("Second win
");
}else{
printf("First win
");
}
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[HDU] 4089 활성화 확률 DPdp[i][j]를 모두 i개인의 대기열인 Tomato가 j위 서버가 마비될 확률로 역추를 사용하면 우리는 상태 이동 방정식을 얻을 수 있다. i == 1 : dp[1][1] = dp[1][1] * p1 + dp[1]...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.