洛谷P1247 取火柴游戏

时间:2024-11-20 22:35:31

经典NIM游戏。

取XOR和即可。

注意输出方案时,找到大于异或和sum的,变为a[i] ^ sum即可。

 #include <cstdio>
const int N = ;
int a[N];
int main() {
int n, sum = ;
scanf("%d", &n);
for(int i = ; i <= n; i++) {
scanf("%d", &a[i]);
sum ^= a[i];
} if(!sum) {
printf("lose");
return ;
} for(int i = ; i <= n; i++) {
if((a[i] ^ sum) <= a[i]) {
printf("%d %d\n", a[i] - (a[i] ^ sum), i);
a[i] = a[i] ^ sum;
break;
}
}
for(int i = ; i <= n; i++) {
printf("%d ", a[i]);
}
return ;
}

AC代码