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 }

 

你可能感兴趣的:(HDU)