1 条题解
-
0
C :
#include <stdio.h> int main(){ int n; scanf("%d", &n); while(n--){ int N, M; scanf("%d %d", &N, &M); printf("%s\n", N%(M+1) ? "Win" : "Lose"); } return 0; }
C++ :
/* 巴什博奕(Bash Game): 只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。 最后取光者得胜。 显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个, 后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果 n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走 k(≤m)个,那么先取者再拿走m+1-k个,结果剩下(m+1)(r-1)个,以后保持这样的 取法,那么先取者肯定获胜。总之,要保持给对手留下(m+1)的倍数,就能最后获胜。 这个游戏还可以有一种变相的玩法:两个人轮流报数,每次至少报一个,最多报十 个,谁能报到100者胜。 */ #include <iostream> #include <cstdio> using namespace std; int main() { int n, m, T; scanf("%d", &T); while(T--) { scanf("%d%d", &n, &m); if(n % (m + 1)) printf("Win\n"); else printf("Lose\n"); } return 0; }
- 1
信息
- ID
- 2113
- 时间
- 3000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者