돌 뽑 기 놀이

1364 단어 바둑 을 두다
돌 뽑 기 놀이
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6872    Accepted Submission(s): 4145
Problem Description
한 무더기 의 돌 은 n 개가 있 는데, 두 사람 이 번갈아 가 며 가 져 간다. 선 취 자 는 첫 번 째 로 여러 개 를 가 져 갈 수 있 지만, 다 가 져 갈 수 는 없다. 이후 매번 가 져 온 돌 수 는 지난번 취 자 수의 2 배 를 초과 해 서 는 안 된다.이 긴 사람 이 이 깁 니 다. 먼저 이 긴 사람 은 "Second win"을 출력 합 니 다. 먼저 이 긴 사람 은 "First win"을 출력 합 니 다.
 
Input
여러 그룹 을 입력 하 십시오. 각 그룹의 첫 번 째 줄 은 2 < = n < 2 ^ 31. n = 0 으로 종료 합 니 다.
 
Output
선 취자 마이너스 출력 "Second win". 선 취자 승 출력 "First win". 
샘플 출력 참조.
 
Sample Input
213100000
 
Sample Output
Second winSecond win
First win
피 보 나 치 게임: 돌 이 한 무더기 있 는데 먼저 이 긴 것 이 적당 하고 돌 의 개 수 는 피 보 나 치 수열 의 하나 이 며 그렇지 않 으 면 나중에 이 긴 것 이다.
#include using namespace std;typedef  long long ll;ll ans[1100];int num = 2;void init(){    ans[0]=ans[1]=1;    for(int i = 2;; i++){        ans[i] = ans[i-1]+ans[i-2];        if(ans[i]>pow(2,31)){            break;        }        num++;    }}int main(){    init();    int n;    while(scanf("%d", &n)!=EOF && n){        bool fou = false;        for(int i = 0; i < num; i++){            if(ans[i]==n){                fou=true;                break;            }        }        if(!fou) cout << "First win"<        else cout << "Second win"<< endl;    }    return 0;}

좋은 웹페이지 즐겨찾기