题意:

每行有三个数字n,p,q,表示一堆硬币一共有n枚,从这个硬币堆里取硬币,一次最少取p枚,最多q枚,如果剩下少于p枚就要一次取完。两人轮流取,直到堆里的硬币取完,最后一次取硬币的算输。对于每一行的三个数字,给出先取的人是否有必胜策略,如果有回答WIN,否则回答LOST。

题解:

这题写的挺有意思的,要是我也能邂逅这mm就好了。

这题像是一个对称的行为,最优的策略是你取k个我就取p+q-k个,以p+q为对称点,所以对p+q取余看结果就好。

代码:

#include <stdio.h>

int main()
{
int n,p,q;
while(~scanf("%d%d%d",&n,&p,&q))
{
n = n%(p+q);
if(n>0 && n<=p)
printf("LOST\n");
else
printf("WIN\n");
} return 0;
}
04-24 11:48