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
原文地址:https://www.cnblogs.com/xin-hua/p/3258457.html