hdu 2516 取石子游戏 博弈论

很显然的nim游戏的变形,很好找规律

先手败:2,3,5,8,13……

其他先手胜。即满足菲波拉数列。

代码如下:

 

 1 #include<iostream>

 2 #include<stdio.h>

 3 #include<algorithm>

 4 #include<iomanip>

 5 #include<cmath>

 6 #include<cstring>

 7 #include<vector>

 8 #define ll __int64

 9 #define pi acos(-1.0)

10 #define MAX 50000

11 #define I(x) scanf("%d",&x)

12 using namespace std;

13 int f[44];

14 int main(){

15     int i,n;

16     f[0]=2;f[1]=3;

17     for(i=2;i<=43;i++)

18         f[i]=f[i-1]+f[i-2];

19     while(I(n)&&n){

20         i=0;

21         while(f[i]<n) i++;

22         if(n==f[i]) puts("Second win");

23         else puts("First win");

24     }

25     return 0;

26 }
View Code

 

 

 

你可能感兴趣的:(HDU)