#712. 反转异或

    ID: 712 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 3 上传者: 标签>基础算法位运算数据结构并查集思维

反转异或

题目描述

给定正整数 xx,令 f(x)f(x) 为对 xx 的二进制表示去掉前导零后翻转得到的正整数。例如,若 x=12=(1100)2x=12=(1100)_2,则 f(x)=(0011)2=3f(x)=(0011)_2=3

现在给定一个整数 nn,判断是否存在正整数 xx 满足

xf(x)=nx \oplus f(x) = n

其中 \oplus 表示按位异或(XOR)运算。

输入格式

输入包含多组测试数据。

  • 第一行包含一个整数 tt,表示测试用例个数(1t1041\le t\le 10^4)。
  • 接下来有 tt 行,每行一个整数 nn0n<2300\le n < 2^{30}),表示一个测试用例。

输出格式

对于每个测试用例,输出一行:

  • 若存在正整数 xx 使得 xf(x)=nx \oplus f(x)=n,则输出 YES
  • 否则输出 NO

样例输入

6
0
3
6
8
10
11

样例输出

YES
YES
YES
NO
YES
NO

说明

样例解释

  • 样例 11:取 x=1x=1f(x)=1f(x)=1,则 11=01\oplus 1 = 0,故输出 YES
  • 样例 22:取 x=2x=2f(x)=1f(x)=1,则 21=32\oplus 1 = 3,故输出 YES
  • 样例 44:可以证明不存在 xx 满足 xf(x)=8x\oplus f(x)=8,故输出 NO