测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A16691. 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。

输入输出样例

输入 #1
6
0
3
6
8
10
11
输出 #1
YES
YES
YES
NO
YES
NO

说明/提示

在第一个测试用例中,取 $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。
上一题 去做题 下一题