AT_abc126_f [ABC126F] XOR Matching
题目描述
请构造一个长度为 $2^{M+1}$ 的数列 $a = \{a_1, a_2, \ldots, a_{2^{M+1}}\}$,使其满足以下条件(如果存在的话,请构造出其中一种):
- $a$ 包含 $0$ 以上小于 $2^M$ 的每个整数各恰好 $2$ 次。
- 对于任意满足 $a_i = a_j$ 的 $i, j\ (i < j)$,都有 $a_i\ xor\ a_{i+1}\ xor\ \cdots\ xor\ a_j = K$。
其中,$xor$ 表示异或运算。
异或($xor$)的定义如下:
对于整数 $c_1, c_2, \ldots, c_n$,$c_1\ xor\ c_2\ xor\ \cdots\ xor\ c_n$ 的二进制表示中,第 $2^k$ 位($k \geq 0$)的数是:如果 $c_1, c_2, \ldots, c_n$ 中二进制表示的第 $2^k$ 位为 $1$ 的数的个数为奇数,则该位为 $1$,否则为 $0$。
例如,$3\ xor\ 5 = 6$(二进制表示为:`011` $xor$ `101` $=$ `110`)。
输入格式
输入为一行,包含两个整数 $M$ 和 $K$。
输出格式
如果不存在满足条件的数列 $a$,输出 `-1`。
如果存在,输出 $a$ 的元素,空格分隔。
如果有多个满足条件的数列,输出任意一个均可。
说明/提示
## 限制
- 输入均为整数。
- $0 \leq M \leq 17$
- $0 \leq K \leq 10^9$
## 样例解释 1
在本例中,存在多个满足条件的数列。例如 $a = \{0, 0, 1, 1\}$,对于 $a_i = a_j$ 的 $(i, j)\ (i < j)$,有 $(1, 2)$ 和 $(3, 4)$。$a_1\ xor\ a_2 = 0, a_3\ xor\ a_4 = 0$,因此该 $a$ 满足条件。
## 样例解释 2
不存在满足条件的数列。
## 样例解释 3
不存在满足条件的数列。
由 ChatGPT 4.1 翻译