杭电-2516-取石子游戏

取石子游戏

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3871    Accepted Submission(s): 2315


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

ps:这道题很水的,找出1,2,3,5,8,13,21........是第二个赢,按照这个规律做,先打表

代码:

 1 #include<stdio.h>
 2 
 3 int num[500] = { 0 };
 4 
 5 int main()
 6 {
 7     num[1] = 1;
 8     num[2] = 2;
 9     int sum = num[1] + num[2];
10     int i;
11     for (i = 3; sum <= 2147483648; ++i)
12     {
13         num[i] = num[i - 1] + num[i - 2];
14         sum = num[i] + num[i - 1];
15     }
16     int n;
17     while (scanf_s("%d", &n) && n)
18     {
19         bool is = true;
20         for (int j = 1; j < i; ++j)
21         {
22             if (num[j] == n)
23             {
24                 is = false;
25                 printf_s("Second win\n");
26                 break;
27             }
28         }
29         if (is)
30         {
31             printf_s("First win\n");
32         }
33     }
34 
35     return 0;
36 }

 

posted on 2016-03-13 15:02  小熊_dream  阅读(121)  评论(0)    收藏  举报

导航