HDU-2897 邂逅明下
邂逅明下
两个人进行博弈,给出三个数字,\(n, q, p\) 代表一堆有n个石子的石堆,两个人每次至少取 \(q\) 个石子,至多取 \(p\) 个石子,拿走最后一个石子的人输,问先手是否必胜
巴什博弈拓展
显然可以看出,后手可以将两人同时拿的数量控制在 \(p + q\) 内,又因为最后一个拿走石子的人会输,因此最后留给先手的一定要剩下 \([1, q]\) 个石子,否则必然会输
所以如果石头的数量如果是 \([k(q+p) + 1, k(p+q) + q]\) 的话,则必然后手必胜,反之,先手必胜
\(k(q+p)\) 代表 \((q+p)\) 的整数倍
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <map>
using namespace std;
typedef long long ll;
const int maxn = 1e6 + 10;
int main()
{
int a, b, c;
while(scanf("%d%d%d", &a, &b, &c) != EOF)
{
int s = b + c;
int x = a % s;
if(x >= 1 && x <= b) printf("LOST\n");
else printf("WIN\n");
}
return 0;
}