题目描述
给定正整数 x,令 f(x) 为对 x 的二进制表示去掉前导零后翻转得到的正整数。例如,若 x=12=(1100)2,则 f(x)=(0011)2=3。
现在给定一个整数 n,判断是否存在正整数 x 满足
x⊕f(x)=n
其中 ⊕ 表示按位异或(XOR)运算。
输入格式
输入包含多组测试数据。
- 第一行包含一个整数 t,表示测试用例个数(1≤t≤104)。
- 接下来有 t 行,每行一个整数 n(0≤n<230),表示一个测试用例。
输出格式
对于每个测试用例,输出一行:
- 若存在正整数 x 使得 x⊕f(x)=n,则输出
YES;
- 否则输出
NO。
样例输入
6
0
3
6
8
10
11
样例输出
YES
YES
YES
NO
YES
NO
说明
样例解释
- 样例 1:取 x=1,f(x)=1,则 1⊕1=0,故输出
YES。
- 样例 2:取 x=2,f(x)=1,则 2⊕1=3,故输出
YES。
- 样例 4:可以证明不存在 x 满足 x⊕f(x)=8,故输出
NO。