HDU - 2516取石子游戏

    xiaoxiao2021-12-15  38

    1堆石子有n个,两人轮流取.先取者第1次可以取任意多个,但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍。取完者胜.先取者负输出"Second win".先取者胜输出"First win".  Input 输入有多组.每组第1行是2<=n<2^31. n=0退出.  Output 先取者负输出"Second win". 先取者胜输出"First win".  参看Sample Output.  Sample Input 2 13 10000 0 Sample Output Second win Second win First win 只要n是斐波那契数就输出second win,别问我是怎么知道的。

    #include <iostream> using namespace std; long long data[51]; int main() { data[0]=2; data[1]=3; for(int i=2;i<51;i++) data[i]=data[i-1]+data[i-2]; int n; while(cin>>n&&n!=0) { int flag=0; for(int i=0;i<50;i++) { if(data[i]==n) { cout<<"Second win"<<endl; flag=1; break; } } if(flag==0)cout<<"First win"<<endl; } return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-1000076.html

    最新回复(0)