hdu 2516 (피 보 나치 게임)

2407 단어
취 석 게임 시간 제한: 2000/1000 MS (Java/Others) 메모리 제한: 32768/32768 K (Java/Others) 총 제출 물 (s): 4005 허 용 된 제출 물 (s): 2391
Problem Description 돌 1 무 더 기 는 n 개가 있 고, 2 명 이 번갈아 가 며 가 져 간다. 선 취 자 는 1 회 에 여러 개 를 가 져 갈 수 있 지만, 다 가 져 갈 수 는 없다. 이후 매번 가 져 오 는 돌 수 는 지난번 취 자 수의 2 배 를 초과 해 서 는 안 된다.이 긴 사람 이 이 깁 니 다. 먼저 이 긴 사람 이 수출 을 저 버 립 니 다. "Second win". 먼저 이 긴 사람 이 수출 을 이 깁 니 다. "First win".
Input 입력 은 여러 그룹 이 있 습 니 다. 각 그룹의 첫 번 째 줄 은 2 < = n < 2 ^ 31. n = 0 으로 종료 합 니 다.
출력 선 취 자 마이너스 출력 "Second win". 선 취 자 승 출력 "First win". 샘플 출력 참조.
Sample Input
2 13 10000 0
Sample Output
Second win Second win First win
이 문 제 는 피 보 나치 게임 입 니 다. 우리 가 수공 으로 계산 한 후에 알 수 있 듯 이 사실은 2, 3, 5, 8 은 모두 백 태 입 니 다. 이 문 제 는 n 이 피 보 나치 수 일 때 모두 필 패 태 입 니 다!
여기에 정리 가 하나 있다.
키 켄 도 프 의 정 리 는 모든 정수 가 몇 개의 불 연속 적 인 피 보 나 계 수 (첫 번 째 피 보 나 계 수 는 포함 되 지 않 음) 의 합 을 나 타 낼 수 있다 는 것 을 나타 낸다.이런 화식 을 키 켄 도 프 표현법 이 라 고 부른다
#include<cstdio>
#include<iostream>
using namespace std;
#include<algorithm>
typedef long long ll;
ll a[201];


int main(){
    a[0]=1;
    a[1]=2;
    for(int i=2;i<=199;++i){
        a[i]=a[i-1]+a[i-2];
    }
    ll n;
    while(cin>>n,n){
        printf("%s
"
,(*lower_bound(a,a+199,n))==n?"Second win":"First win"); } return 0; }

좋은 웹페이지 즐겨찾기