题意:http://acm.hdu.edu.cn/showproblem.php?pid=2516
1堆石子有n个,两人轮流取.先取者第1次可以取任意多个,但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍。取完者胜.先取者负输出"Second win".先取者胜输出"First win".
1 #include<iostream> 2 using namespace std; 3 int main() { 4 int n, i,flag=1; 5 int a[1000] = { 0 }; 6 a[0] = 0; a[1] = 1; a[2] = 1; 7 for (i = 3; i < 1000; i++) { 8 a[i] = a[i - 1] + a[i - 2]; 9 } 10 while (cin >> n) { 11 if (n == 0) 12 exit(0); 13 else { 14 for (i = 3; i < 1000; i++) { 15 if (n == a[i]) { 16 cout << "Second win" << endl; 17 flag = 0; 18 break; 19 } 20 } 21 if (flag == 1) { 22 cout << "First win" << endl; 23 } 24 else { 25 flag = 1; 26 } 27 } 28 } 29 return 0; 30 }