2 1000 1 1 100
Lose Win
#include <stdio.h> int main(){ int t, n, m; scanf("%d", &t); while(t--){ scanf("%d%d", &n, &m); printf(n % (m+1) ? "Win\n" : "Lose\n"); } return 0; }
小王喜欢与同事玩一些小游戏,今天他们选择了玩取石子。
游戏规则如下:共有N堆石子,已知每堆中石子的数量,并且规定好每堆石子最多可以取的石子数(最少取1颗)。
两个人轮流取子,每次只能选择N堆石子中的一堆,取一定数量的石子(最少取一个),并且取的石子数量不能多于该堆石子规定好的最多取子数,等哪个人无法取子时就表示此人输掉了游戏。
假设每次都是小王先取石子,并且游戏双方都绝对聪明,现在给你石子的堆数、每堆石子的数量和每堆石子规定的单次取子上限,请判断出小王能否获胜。
2 1 1000 1 2 1 1 1 1
Lose Lose
#include <stdio.h> int bashi(int n, int m){ return n % (m+1); } int main(){ int t, num, n, m, ans; scanf("%d", &t); while(t--){ scanf("%d", &num); ans = 0; while(num--){ scanf("%d%d", &n, &m); ans ^= bashi(n, m); } printf(ans ? "Win\n" : "Lose\n"); } return 0; }
小王喜欢与同事玩一些小游戏,今天他们选择了玩取石子。
游戏规则如下:共有N堆石子,已知每堆中石子的数量,两个人轮流取子,每次只能选择N堆石子中的一堆,取一定数量的石子(最少取一个),取过子之后,还可以将该堆石子中剩下的任意多个石子中随意选取几个放到其它的任意一堆或几堆上。等哪个人无法取子时就表示此人输掉了游戏。注意,一堆石子没有子之后,就不能再往此处放石子了。
假设每次都是小王先取石子,并且游戏双方都绝对聪明,现在给你石子的堆数、每堆石子的数量,请判断出小王能否获胜。
例如:如果最开始有4堆石子,石子个数分别为3 1 4 2,而小王想决定要先拿走第三堆石子中的两个石子(石子堆状态变为3 1 2 2),然后他可以使石子堆达到的状态有以下几种:
3 1 2 2(不再移动石子)
4 1 1 2(移动到第一堆一个)
3 2 1 2(移动到第二堆一个)
3 1 1 3(移动到第四堆一个)
5 1 0 2(全部移动到第一堆)
3 3 0 2(全部移动到第二堆)
3 1 0 4(全部移动到最后)
3 2 1 3 2 1 1 0
Win Lose
#include <stdio.h> #include <string.h> int arr[1001]; int main(){ int n, ans, a; while(scanf("%d", &n), n){ while(n--){ scanf("%d", &a); ++arr[a]; } ans = 0; for(int i = 0; i < 1001; ++i) if(arr[i] & 1){ ans = 1; break; } printf(ans ? "Win\n" : "Lose\n"); memset(arr, 0, sizeof(arr)); } return 0; }
2 1 8 4 4 7
0 1 0
#include <stdio.h> #include <math.h> int main(){ int a, b, ans; while(scanf("%d%d", &a, &b) == 2){ if(a > b) ans = a, a = b, b = ans; ans = (1 + sqrt(5.0)) / 2 * (b - a); printf(ans != a ? "1\n" : "0\n"); } return 0; }
2.从第二次开始,每个人取的石子数至少为1,至多为对手刚取的石子数的两倍。
himdd事先想知道自己会不会赢,你能帮帮他吗?(每次himdd先手)
2 5 6
No No Yes
#include <stdio.h> long long n, a[100] = {2, 3}; int main(){ int i, ans; for(i = 2; i != 100; ++i) a[i] = a[i-1] + a[i-2]; while(scanf("%lld", &n) == 1){ ans = 0; for(i = 0; i != 100; ++i) if(a[i] == n){ ans = 1; break; } else if(a[i] > n) break; printf(ans ? "No\n" : "Yes\n"); } return 0; }
3 2 1 1 3 3 8 11 2 5 10
HRDV HRDV PIAOYI
#include <stdio.h> int main(){ int t, n, a, ans; scanf("%d", &t); while(t--){ scanf("%d", &n); ans = 0; while(n--){ scanf("%d", &a); ans ^= a; } printf(ans ? "PIAOYI\n" : "HRDV\n"); } return 0; }