题意:有N个硬币围成一圈,两个人每次只能取连续的1~K个硬币。问先手有没有必胜策略。
解法:当K==1:结果只与N的奇偶有关。
当K>=2:如果N<=K,那么很显然先手必胜。
当N>K时,先手一下子取不完,设剩余M个,如果M<=K则后手一下全部取完,后手必胜;当M>K,即此时M>=3且K>=2,那么后手就可以在剩下的一排里取中间留两边然后以后就对称取,就一定必胜;所有此时后手必胜;
代码:
/****************************************************
* author:xiefubao
*******************************************************/
#pragma comment(linker, "/STACK:102400000,102400000")
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <queue>
#include <vector>
#include <algorithm>
#include <cmath>
#include <map>
#include <set>
#include <stack>
#include <string.h>
using namespace std;
#define eps 1e-8
typedef long long LL;
int main()
{
//freopen ("in.txt" , "r" , stdin);
int a,b;int t=0;
int r=0;cin>>r;
while(r--)
{cin>>a>>b;
t++;
if(b==1){
if(a&1) printf("Case %d: first\n",t);
else printf("Case %d: second\n",t);
}
else
{
if(a>b)
printf("Case %d: second\n",t);
else
printf("Case %d: first\n",t);
}
}
return 0;
}