斐波那契博弈
阿新 • • 發佈:2019-04-13
規則 sca clas first i++ () fibonacci bsp ace
一堆個數為n的物品,雙方輪流按如下規則取物品,取完最後物品的人勝利。
先手不可以第一次取完所有物品。
之後每次可以取得物品個數1<=k<=對手上次取得個數的2倍。
結論:
先手勝當且僅當n不是Fibonacci數。(證明略,心累)
using namespace std; int fib[50]; int main(){ fib[0]=1;fib[1]=2; for(int i=2;i<45;i++) fib[i]=fib[i-1]+fib[i-2];//打表 int n; while(scanf("%d",&n)!=EOF&&n){ int i=0; for(i=0;i<45;i++) if(fib[i]==n) break; if(i<45) puts("Second"); else puts("First"); } return 0; }
斐波那契博弈