2010-1147
从 Trac 迁移的文章
这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。
原文章内容如下:
题目类型:
游戏博弈
题目大意:
N个气球围城一圈,每人轮流执行一次操作,将连续的1~K个气球弄破。最后一步操作的人获胜。问先手能不能获胜。
解题思路:
K=1时,特判。
K>1时,
若N<=K,第一个人第一次可以全部弄破,获胜。
若N>K,无论第一个人怎么操作,第二个人总能使得局面变成两个相同的部分,以后依照第一个人进行相同操作,后手一定获胜。
代码:
{{{
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <vector>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
int n,k;
while (scanf("%d%d",&n, &k)!=EOF)
{
if (n<=k)
puts("Win");
else
if (k==1)
if (n&1)
puts("Win");
else
puts("Lose");
else
puts("Lose");
}
return 0;
}
}}}
题目类型:
游戏博弈
题目大意:
N个气球围城一圈,每人轮流执行一次操作,将连续的1~K个气球弄破。最后一步操作的人获胜。问先手能不能获胜。
解题思路:
K=1时,特判。
K>1时,
若N<=K,第一个人第一次可以全部弄破,获胜。
若N>K,无论第一个人怎么操作,第二个人总能使得局面变成两个相同的部分,以后依照第一个人进行相同操作,后手一定获胜。
代码:
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <vector>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
int n,k;
while (scanf("%d%d",&n, &k)!=EOF)
{
if (n<=k)
puts("Win");
else
if (k==1)
if (n&1)
puts("Win");
else
puts("Lose");
else
puts("Lose");
}
return 0;
}