题目描述
以下の条件を満たす、長さ 2M + 1 の数列 a = {a1, a2, ..., a2M + 1} を、存在するならば 1 つ構築してください。
- a は 0 以上 2M 未満の整数を、それぞれちょうど 2 つずつ含む。
- ai = aj を満たす任意の i, j (i < j) について、ai xor ai + 1 xor ... xor aj = K である。
xor (排他的論理和) とは
整数 c1, c2, ..., cn の xor は以下のように定義されます。
- c1 xor c2 xor ... xor cn を二進表記した際の 2k (k ≥ 0) の位の数は、c1, c2, ..., cn のうち二進表記した際の 2k の位の数が 1 となるものが奇数個ならば 1、偶数個ならば 0 である。
例えば、3 xor 5 = 6 です (二進表記すると: 011
xor 101
= 110
です)。
输入格式
入力は以下の形式で標準入力から与えられる。
M K
输出格式
条件を満たす数列 a が存在しなければ -1
を出力せよ。
存在するならば、a の要素を空白区切りで出力せよ。
条件を満たす数列が複数存在する場合、どれを出力してもよい。
题目大意
请构造一个长度为 2m+1 的序列 a 满足
- ∀i∈[1,2m+1],ai∈[0,2m−1] 且每个数都恰好出现两次。
- 对于任意一对 (i,j) 满足 ai=aj,$a_i\oplus a_{i+1} \oplus \cdots \oplus a_{j-1} \oplus a_j = k$
⊕ 表示按位异或。
若不存在满足要求的序列,输出-1
。
若存在多个满足要求的序列,输出任意一个即可。
1 0
0 0 1 1
1 1
-1
5 58
-1
提示
制約
- 入力は全て整数である。
- 0 ≤ M ≤ 17
- 0 ≤ K ≤ 109
Sample Explanation 1
このケースでは、条件を満たす数列は複数存在します。 例えば a = {0, 0, 1, 1} の場合、ai = aj を満たす (i, j) (i < j) として (1, 2) と (3, 4) があります。a1 xor a2 = 0, a3 xor a4 = 0 であるため、この a は与えられた条件を満たしています。
Sample Explanation 2
条件を満たす数列は存在しません。
Sample Explanation 3
条件を満たす数列は存在しません。