CF2160C Reverse XOR

题目描述

给定一个正整数 $x$,我们定义 $f(x)$ 为 $x$ 的二进制表示(不含前导零)反转后形成的正整数。例如,若 $x=12=1100_2$,则 $f(x)=0011_2=3$。 现在给定一个整数 $n$。请你判断是否存在一个正整数 $x$ 使得 $x \oplus f(x) = n$。 这里,$\oplus$ 表示 [按位异或运算](https://en.wikipedia.org/wiki/Bitwise_operation#XOR)。

输入格式

输入包含多组测试数据。第一行为测试用例数量 $t$,其中 $1 \le t \le 10^4$。 接下来每组测试用例占一行,每行包含一个整数 $n$,满足 $0 \leq n < 2^{30}$。

输出格式

对于每组测试用例,若存在正整数 $x$ 满足 $x \oplus f(x) = n$,输出 YES,否则输出 NO。 你可以使用任意大小写形式的 YES 或 NO,例如 "yEs"、"yes"、"Yes" 都视为 YES。

说明/提示

在第一个测试用例中,取 $x=1$ 时,$f(x)=1$,$x \oplus f(x)=0$,所以答案为 YES。 在第二个测试用例中,取 $x=2$ 时,$f(x)=1$,$x \oplus f(x)=3$,所以答案为 YES。 在第四个测试用例中,可以证明不存在 $x$ 使得 $x \oplus f(x)=8$,所以答案为 NO。 由 ChatGPT 5 翻译