UVA 1566 - John(anti-Nim)

来源:互联网 发布:旅行者杂志 知乎 编辑:程序博客网 时间:2024/05/18 00:44

UVA 1566 - John

题目链接

题意:给定n堆糖果,每次取一堆任意个数,取到最后一个的输

思路:anti-Nim,推导出来就是如果全为1,判断1的奇偶,如果不为1,就和Nim问题是一样的,判断异或和

代码:

#include <cstdio>#include <cstring>int t, n;bool solve() {    scanf("%d", &n);    int x, sum = 0, flag = 1;    for (int i = 0; i < n; i++) {scanf("%d", &x);if (x > 1) flag = 0;sum ^= x;    }    if (flag)return n % 2 == 0;    elsereturn sum != 0;}int main() {    scanf("%d", &t);    while (t--) {if (solve()) printf("John\n");else printf("Brother\n");    }    return 0;}


2 2