经典NIM游戏。
取XOR和即可。
注意输出方案时,找到大于异或和sum的,变为a[i] ^ sum即可。
1 #include2 const int N = 500010; 3 int a[N]; 4 int main() { 5 int n, sum = 0; 6 scanf("%d", &n); 7 for(int i = 1; i <= n; i++) { 8 scanf("%d", &a[i]); 9 sum ^= a[i];10 }11 12 if(!sum) {13 printf("lose");14 return 0;15 }16 17 for(int i = 1; i <= n; i++) {18 if((a[i] ^ sum) <= a[i]) {19 printf("%d %d\n", a[i] - (a[i] ^ sum), i);20 a[i] = a[i] ^ sum;21 break;22 }23 }24 for(int i = 1; i <= n; i++) {25 printf("%d ", a[i]);26 }27 return 0;28 }