#AT1342. F - XOR Matching
F - XOR Matching
F - XOR匹配
得分:600分
问题描述
构造一个长度为$2^{M + 1}$的序列$a$ = {$a_1,\ a_2,\ ...,\ a_{2^{M + 1}}$} ,使得如果存在这样的序列,则满足以下条件。
- 在$a$中,每个介于$0$和$2^M - 1$之间(包括$2^M - 1$)的整数都出现了两次。
- 对于任意$i$和$j$($i < j$),满足$a_i = a_j$时,公式$a_i \ xor \ a_{i + 1} \ xor \ ... \ xor \ a_j = K$成立。
什么是异或(按位异或)?
整数$c_1, c_2, ..., c_n$的异或定义如下:
- 当将$c_1 \ xor \ c_2 \ xor \ ... \ xor \ c_n$写成二进制时,在$2^k$的位上($k \geq 0$)的数为$1$,如果$c_1, c_2, ...c_m$中的二进制表示形式在$2^k$的位上有奇数个数字,否则为$0$。
例如,$3 \ xor \ 5 = 6$。(如果写成二进制形式:011
$xor$ 101
$=$ 110
。)
</details>
约束
- 输入的所有值均为整数。
- $0 \leq M \leq 17$
- $0 \leq K \leq 10^9$
输入
输入以以下格式从标准输入中给出:
输出
如果不存在满足条件的序列$a$,输出-1
。
如果存在这样的序列$a$,以空格分隔打印一个这样的序列$a$的元素。
如果有多个满足条件的序列,任何一个都将被接受。
1 0
0 0 1 1
对于这个例子,有多个满足条件的序列。
例如,当$a$ = {$0, 0, 1, 1$}时,有两对$(i,\ j)\ (i < j)$满足$a_i = a_j$:$(1, 2)$和$(3, 4)$。由于$a_1 \ xor \ a_2 = 0$和$a_3 \ xor \ a_4 = 0$,这个序列$a$满足条件。
1 1
-1
没有序列满足条件。
5 58
-1
没有序列满足条件。