[ABC126F] XOR Matching
题意翻译
请构造一个长度为 $2^{m+1}$ 的序列 $a$ 满足
- $\forall i \in[1, 2^{m+1}], a_i \in [0, 2^m-1]$ 且每个数都恰好出现两次。
- 对于任意一对 $(i, j)$ 满足 $a_i = a_j$,$a_i\oplus a_{i+1} \oplus \cdots \oplus a_{j-1} \oplus a_j = k$
$\oplus$ 表示按位异或。
若不存在满足要求的序列,输出```-1```。
若存在多个满足要求的序列,输出任意一个即可。
题目描述
[problemUrl]: https://atcoder.jp/contests/abc126/tasks/abc126_f
以下の条件を満たす、長さ $ 2^{M\ +\ 1} $ の数列 $ a $ = {$ a_1,\ a_2,\ ...,\ a_{2^{M\ +\ 1}} $} を、存在するならば $ 1 $ つ構築してください。
- $ a $ は $ 0 $ 以上 $ 2^M $ 未満の整数を、それぞれちょうど $ 2 $ つずつ含む。
- $ a_i\ =\ a_j $ を満たす任意の $ i,\ j\ (i\ <\ j) $ について、$ a_i\ xor\ a_{i\ +\ 1}\ xor\ ...\ xor\ a_j\ =\ K $ である。
xor (排他的論理和) とは
整数 $ c_1,\ c_2,\ ...,\ c_n $ の xor は以下のように定義されます。
- $ c_1\ xor\ c_2\ xor\ ...\ xor\ c_n $ を二進表記した際の $ 2^k $ ($ k\ \geq\ 0 $) の位の数は、$ c_1,\ c_2,\ ...,\ c_n $ のうち二進表記した際の $ 2^k $ の位の数が $ 1 $ となるものが奇数個ならば $ 1 $、偶数個ならば $ 0 $ である。
例えば、$ 3\ xor\ 5\ =\ 6 $ です (二進表記すると: `011` $ xor $ `101` $ = $ `110` です)。
输入输出格式
输入格式
入力は以下の形式で標準入力から与えられる。
> $ M $ $ K $
输出格式
条件を満たす数列 $ a $ が存在しなければ `-1` を出力せよ。
存在するならば、$ a $ の要素を空白区切りで出力せよ。
条件を満たす数列が複数存在する場合、どれを出力してもよい。
输入输出样例
输入样例 #1
1 0
输出样例 #1
0 0 1 1
输入样例 #2
1 1
输出样例 #2
-1
输入样例 #3
5 58
输出样例 #3
-1
说明
### 制約
- 入力は全て整数である。
- $ 0\ \leq\ M\ \leq\ 17 $
- $ 0\ \leq\ K\ \leq\ 10^9 $
### Sample Explanation 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 $ は与えられた条件を満たしています。
### Sample Explanation 2
条件を満たす数列は存在しません。
### Sample Explanation 3
条件を満たす数列は存在しません。