1. 程式人生 > >斐波拉契博弈

斐波拉契博弈

IT panel ali end == main cout 取石子 bottom

取石子遊戲

Problem Description 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 (適用於特殊的題型)
 1
#include<iostream> 2 #include<map> 3 using namespace std; 4 int main() 5 { 6 int fib[500]; 7 fib[0] = 1, fib[1] = 2; 8 for (int i = 2; i <= 70;i++) 9 fib[i] = fib[i - 1] + fib[i - 2]; 10 int n; 11 while (cin >> n&&n) 12 { 13 int
mark = 0; 14 for (int i = 0; i <= 70; i++) { 15 if (fib[i] == n) mark = 1, cout << "Second win" << endl; 16 if (fib[i] > n) break; 17 } 18 if (!mark) cout << "First win" << endl; 19 } 20 21 return 0; 22 }

斐波拉契博弈