$\rm{Description}$
有 $n$ 个物品,A
, B
两人轮流从物品中拿走一部分,每次至少拿 $1$ 个,最多拿 $?$ 个,拿走最后一个的人获胜。是否有必胜策略,若有,则求出策略。
$\rm{Solution}$
可以想到,当物品的总量 $n=(m+1)r+s$ 时,A
先拿走 $s$ 个物品,之后每次若B
取走 $k$ 个,则 A
对应的取走 $m+1-k$ 个,这样A
显然能够取得胜利。
若物品总量为 $n=(m+1)r$ ,此时B用同样的策略即可,B必胜。
$\rm{Code}$
#include <iostream>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
if(n % (m + 1) == 0) {
cout << "后手胜" << endl;
} else {
cout << "先手胜" << endl;
}
return 0;
}
原题目:【Luogu-P1247】 & 【Luogu-P2197】