AT_agc031_c [AGC031C] Differ by 1 Bit

题目描述

给定整数 $N,\ A,\ B$。请判断是否存在一个 $(0, 1, \ldots, 2^N-1)$ 的排列 $(P_0, P_1, \ldots, P_{2^N-1})$,满足以下所有条件。如果存在,请构造出一个解。 - $P_0 = A$。 - $P_{2^N-1} = B$。 - 对于所有 $0 \leq i < 2^N-1$,$P_i$ 和 $P_{i+1}$ 的二进制表示恰好只有一位不同。

输入格式

输入通过标准输入给出,格式如下: > $N$ $A$ $B$

输出格式

如果不存在满足条件的排列,则输出 `NO`。 如果存在,首先输出一行 `YES`。然后第二行输出 $(P_0, P_1, \ldots, P_{2^N-1})$,用空格分隔。如果有多个解,输出任意一个均可。

说明/提示

### 限制条件 - $1 \leq N \leq 17$ - $0 \leq A \leq 2^N-1$ - $0 \leq B \leq 2^N-1$ - $A \neq B$ - 输入的所有数均为整数。 ### 样例解释 1 将 $P=(1,0,2,3)$ 用二进制表示为 $(01, 00, 10, 11)$,可以发现任意相邻的两个元素恰好只有一位不同。 由 ChatGPT 4.1 翻译