2 13 10000 0
Second win Second win First win
解题思路:
解题代码:这题没法用sg直接求了,数据量太大了,而且sg会受上次的影响,所以不一定。
因此,只能打表找规律,找到规律发现如果满足斐波那契数列 f[n]=f[n-1]+f[n-2] 的数列,Second Win 否则 ,First Win
#include <iostream>
#include <cstdio>
#include <set>
using namespace std;
set <int> mys;
void ini(){
int f1=1,f2=1,f3=2;
while(true){
f3=f1+f2;
if(f3<=0) break;
mys.insert(f3);
f1=f2;
f2=f3;
}
}
int main(){
ini();
int n;
while(scanf("%d",&n)!=EOF && n!=0){
if(mys.find(n)!=mys.end()) printf("Second win\n");
else printf("First win\n");
}
return 0;
}
HDU 2516 取石子游戏 (博弈论),布布扣,bubuko.com
原文:http://blog.csdn.net/a1061747415/article/details/36908437