思路:
如果k=1就直接全部异或
如果k=2那么两个数肯定有一位二进制不同
所以记录bi,j为第i位为j的书的异或和,然后不同就输出
#include
#include
using namespace std;
int n, k;
int b[33][2];
int main() {
scanf("%d%d", &n, &k);
if(k == 1) {
int sum = 0;
for(int i = 1; i <= n; i ++) {
int x;
scanf("%d", &x);
sum ^= x;
}
printf("%d", sum);
}
else {
for(int i = 1; i <= n; i ++) {
int x, tot = 0, y;
scanf("%d", &x);
y = x;
while(x) {
b[++ tot][x % 2] ^= y;
x /= 2;
}
}
for(int i = 1; i < 33; i ++)
if(b[i][0] != b[i][1]) {
printf("%d %d", min(b[i][0], b[i][1]), max(b[i][1], b[i][0]));
return 0;
}
}
return 0;
}