HDU 1850 Being a Good Boy in Spring Festival
题意:中文题
思路:Nim游戏,每次枚举每个位置,可以计算出其他位置的异或和,然后如果当前位置的个数大于这个异或和,说明肯定可以取一些石头使得异或和为0,方案数+1
代码:
#include <cstdio>
#include <cstring>
const int N = 105;
int m, a[N], sum;
int main() {
while (~scanf("%d", &m) && m) {
sum = 0;
for (int i = 0; i < m; i++) {
scanf("%d", &a[i]);
sum ^= a[i];
}
int ans = 0;
for (int i = 0; i < m; i++) {
int tmp = (a[i]^sum);
if (tmp < a[i])
ans++;
}
printf("%d\n", ans);
}
return 0;
}