很显然的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 }