题意:
每行有三个数字n,p,q,表示一堆硬币一共有n枚,从这个硬币堆里取硬币,一次最少取p枚,最多q枚,如果剩下少于p枚就要一次取完。两人轮流取,直到堆里的硬币取完,最后一次取硬币的算输。对于每一行的三个数字,给出先取的人是否有必胜策略,如果有回答WIN,否则回答LOST。
题解:
这题写的挺有意思的,要是我也能邂逅这mm就好了。
这题像是一个对称的行为,最优的策略是你取k个我就取p+q-k个,以p+q为对称点,所以对p+q取余看结果就好。代码:
#includeint 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;}