#ZF1162. 寻找数字方面的高手
寻找数字方面的高手
Description
小任很擅长寻找数字。
现在他找了 个不同的数,并且他们的异或和为 ,即 ,其中 表示异或运算符。
在他的百般请求下,你需要找出长度为 且各不相同的数组 ,使得 $\left( a_1 \& b_1 \right) \oplus \left( a_2 \& b_2 \right) \oplus \cdots \oplus \left( a_n \& b_n \right) = m'$ ,其中 表示位与运算, 表示不超过m的最大偶数。
异或运算:两个运算数的位中,相同则结果为0,不同则结果为1。例如,数字 (二进制表示为)和数字 (二进制表示为 )进行异或运算,结果为 ,即为十进制中的 。
位与运算:只有两个数的二进制同时为 ,结果才为 ,否则为 。例如,数字 (二进制表示为)和数字 (二进制表示为 )进行位与运算,结果为 ,即十进制中的 。
Format
Input
本题有多组测试数据。
第一行输入一个整数 ,表示有 组测试用例。
对于每个测试用例,
第一行包含两个个整数 ,分别表示数组的大小和数组元素异或和。
第二行包含 个不同的整数 。表示原本的数组。
保证题目中 的总和不超过 。
保证 一定等于数组中所有元素的异或和。
Output
输出 行,每行输出 个整数,表示满足条件的数组 ,对于 ,第 个整数表示 。
如果有多种解决方案,输出其中任意一种即可。
Samples
3
4 8
2 4 6 8
3 5
2 3 4
1 1
1
2 4 6 8
3 2 4
0
Limitation
1s, 1024KiB for each test case.