题解
题意:
n个硬币围成一圈,两个人轮流拿1~k个硬币,拿到的硬币的序号必须是连续的,比如[1,3,4 ]中间缺了2,3号和4号硬币就拿不到,最后一个拿完所有硬币的人获胜,问最终谁胜了
对称博弈:
在博弈论,如果博弈的收益只依赖于选手所选择的策略而不依赖于进行博弈的选手,这类博弈称为对称博弈。
好像没什么卵用↑
当
k
=
1
k=1
k=1 时,胜负取决于n的奇偶性,这个很好判断
当
k
≥
n
k\ge n
k≥n 时,先手一次性拿完,先手必胜
当
1
<
k
<
n
1<k<n
1<k<n 时,先手第一次没拿完,就会把环拆成链,后手只要从这条链中间取,拆掉链,之后无论先手怎么拿,后手都能在链对称的位置取硬币,后手必胜
#include <bits/stdc++.h>
using namespace std;
int n,m,k;
int main(){
ios::sync_with_stdio(0);
int T;
cin>>T;
for (int cs = 1; cs <= T; ++cs) {
printf("Case %d: ",cs);
cin>>n>>k;
if((k==1 && n%2 )|| (k>=n))
puts("first");
else puts("second");
}
return 0;
}