HDU 2516 取石子游戏

这是一道Fibonacci’s Game (斐波那契博弈)

斐波那契博弈模型,是ACM题中常见的组合游戏中的一种,大致上是这样的:
有一堆个数为 n 的石子,游戏双方轮流取石子,满足:
1. 先手不能在第一次把所有的石子取完;
2. 之后每次可以取的石子数介于 1 到对手刚取的石子数的 2 倍之间(包含 1 和对手刚取的石子数的 2 倍)。
约定取走最后一个石子的人为赢家,求必败态。

View Code
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstdlib>
 4 #include<algorithm>
 5 #include<cmath>
 6 #include<queue>
 7 #include<set>
 8 #include<map>
 9 #include<vector>
10 using namespace std;
11 
12 int main(  )
13 {
14     const int t = 0x7fffffff ;
15     int f[50] ={ 1 ,1 },i,n;
16     for( i = 2; i < 47 ; i ++)
17     {
18         f[i] = f[i-1] + f[i-2];//printf( "%d %d\n",f[i] ,t );
19 //        if( f[i] < 0  ) break;
20         
21     }
22     while( scanf( "%d" ,&n ),n )
23     {
24        for(  i = 1 ; i < 47; i++  )
25        {
26           if( f[i]==n ) break;
27        }       
28        if( i != 47 ) puts("Second win");
29        else puts( "First win" ); 
30     }
31  //   system( "pause" );
32     return 0;
33 }

 

posted @ 2012-04-18 16:05  wutaoKeen  阅读(193)  评论(0编辑  收藏  举报