这道题是有规律的博弈题目,,,
所以我们只需要找出规律来就ok了
牛人用sg函数暴力找规律,菜鸟手工模拟以求规律。。。【牢骚】
if(m>=2)
{
if(n<=m) {first第一口就可以吃掉所有的。所以first必赢,}
else {first无法一口吃掉所有的,所以second成了主动的了,如果first第一口吃掉k1个,那么明智的second只要吃掉k2个就可以了(n-k1-k2是偶数,也包括
0的),使得 剩下的数字是分成两个数字数目相等的堆,以后的工作便是first做什么,那么second就另一个堆上做什么(包括分堆操作)}
}
代码如下:
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <string>
#include <cmath>
#include <queue>
#include <stack>
#include <vector>
#include <map> #define LL long long
#define eps 1e-8
#define N 15
#define K 15 using namespace std; int main ()
{
int t, k = 0;
scanf("%d", &t);
while(t--)
{
int n, m;
scanf("%d%d",&n, &m);
printf("Case %d: ",++k);
if(m==1)
{
if(n&1) puts("first");
else puts("second");
continue;
}
if(n<=m) puts("first");
else puts("second");
}
return 0;
}