AT_abc126_f.[ABC126F] XOR Matching

提高+/省选-

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

请构造一个长度为 2M+12^{M+1} 的数列 a={a1,a2,…,a2M+1}a = \{a_1, a_2, \ldots, a_{2^{M+1}}\},使其满足以下条件(如果存在的话,请构造出其中一种):

  • aa 包含 00 以上小于 2M2^M 的每个整数各恰好 22 次。
  • 对于任意满足 ai=aja_i = a_j 的 i,j (i<j)i, j\ (i < j),都有 ai xor ai+1 xor ⋯ xor aj=Ka_i\ xor\ a_{i+1}\ xor\ \cdots\ xor\ a_j = K。

其中,xorxor 表示异或运算。

异或(xorxor)的定义如下:

对于整数 c1,c2,…,cnc_1, c_2, \ldots, c_n,c1 xor c2 xor ⋯ xor cnc_1\ xor\ c_2\ xor\ \cdots\ xor\ c_n 的二进制表示中,第 2k2^k 位(k≥0k \geq 0)的数是:如果 c1,c2,…,cnc_1, c_2, \ldots, c_n 中二进制表示的第 2k2^k 位为 11 的数的个数为奇数,则该位为 11,否则为 00。

例如,3 xor 5=63\ xor\ 5 = 6(二进制表示为:011 xorxor 101 == 110)。

输入格式

输入为一行,包含两个整数 MM 和 KK。

输出格式

如果不存在满足条件的数列 aa,输出 -1。

如果存在,输出 aa 的元素,空格分隔。

如果有多个满足条件的数列,输出任意一个均可。

输入输出样例

  • 输入#1

    1 0

    输出#1

    0 0 1 1
  • 输入#2

    1 1

    输出#2

    -1
  • 输入#3

    5 58

    输出#3

    -1

说明/提示

限制

  • 输入均为整数。
  • 0≤M≤170 \leq M \leq 17
  • 0≤K≤1090 \leq K \leq 10^9

样例解释 1

在本例中,存在多个满足条件的数列。例如 a={0,0,1,1}a = \{0, 0, 1, 1\},对于 ai=aja_i = a_j 的 (i,j) (i<j)(i, j)\ (i < j),有 (1,2)(1, 2) 和 (3,4)(3, 4)。a1 xor a2=0,a3 xor a4=0a_1\ xor\ a_2 = 0, a_3\ xor\ a_4 = 0,因此该 aa 满足条件。

样例解释 2

不存在满足条件的数列。

样例解释 3

不存在满足条件的数列。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页