#abc126f. [abc126_f]XOR Matching
[abc126_f]XOR Matching
题目描述
构造一个长度为 的序列 = {},满足以下条件(如果存在这样的序列)。
- 序列 中的每个整数都是从 到 (包括端点)的数字,并且每个数字在序列中出现两次。
- 对于任意的 和 ,如果 ,则等式 $a_i \\ xor \\ a_{i + 1} \\ xor \\ ... \\ xor \\ a_j = K$ 成立。
什么是异或运算(xor)?
对于整数 ,异或运算定义如下:
- 当将 转换为二进制时,如果在第 位()上有奇数个整数 ,使得其二进制表示在第 位上为 1,那么转换后的二进制数的第 位为 1;否则,该位为 0。
例如,。(如果我们将其写成二进制:011
101
\= 110
。)
约束条件
- 输入中的所有值均为整数。
输入
从标准输入读取输入数据,输入格式如下:
输出
如果无法找到满足条件的序列 ,则输出 -1
。
如果存在满足条件的序列 ,则以空格分隔地打印出其中一个序列 的元素。
如果有多个满足条件的序列,则可以接受任意一个。
示例输入 1
1 0
示例输出 1
0 0 1 1
对于这个例子,存在多个满足条件的序列。
例如,当 = {} 时,有两对 满足 : 和 。由于 和 ,序列 满足条件。
示例输入 2
1 1
示例输出 2
-1
没有满足条件的序列。
示例输入 3
5 58
示例输出 3
-1
没有满足条件的序列。