#CF2162C. Beautiful XOR

    ID: 6973 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>位运算构造贪心CodeforcesCodeforces Round 1059(Div3)Div3CCF2162C1100

Beautiful XOR

题目描述

给定两个整数 aabb,你可以进行如下操作任意次数(包括零次):

  • 选择任意整数 xx,满足 0xa0 \le x \le a(其中 aa 为当前值,而非初始值),
  • aa 更新为 ax a \oplus x。这里,\oplus 表示按位异或运算符。

通过一系列操作后,你希望将 aa 的值变为恰好 bb

请找到至多 100100 次操作(即所使用的 xx 值序列),将 aa 变为 bb,或者报告无解。

注意,你不需要找到最少操作次数的方案,只需给出任意一组满足要求且操作不超过 100100 次的方案。

输入格式

输入的第一行为一个整数 tt1t10001 \le t \le 1000),表示测试用例数量。

每组测试数据包含两个整数 aabb1a,b1091 \le a, b \le 10^9)。

输出格式

对于每组测试数据,如果无法通过允许的操作将 aa 变为 bb,则输出一行 1-1

否则,第一行输出一个整数 kk0k1000 \le k \le 100),表示需要的操作次数。第二行输出 kk 个整数 x1,x2,,xkx_1, x_2, \dots, x_k,依次为每次操作选取的 xx

如果存在多种可行序列,你可以输出任意一种。

样例

6
9 6
13 13
292 929
405 400
998 244
244 353
2
7 8
0
-1
1
5
2
25 779
-1

样例说明

对于第一个测试用例:

  • 选择 x=7x=7,此时 aa 变为 97=149 \oplus 7 = 14
  • 选择 x=8x=8,此时 aa 变为 148=614 \oplus 8 = 6

因此,我们可以使 a=ba=b。对于第四个测试用例,选择 x=5x=5 可使 a=ba=b

由 ChatGPT 5 翻译

来源

Codeforces 2162C,英文题名 Beautiful XOR。