#XMOJ10579. 生成数字的方法

生成数字的方法

说明

输入文件: gen.in 输出文件: gen.out
时间限制: 1 Sec 内存限制: 256 MB

题目描述

小明想出了如下一种“生成数字的方法”:

步骤 1:初始状态设为 $ s=0 $,$ t=0 $。

步骤 2:将 $ t $ 的值乘以2,作为新的 $ t $ 值,即执行 $ t := t \times 2 $。

步骤 3:在心里抛一枚硬币。如果抛出正面,就给 $ t $ 的值加 $1$,作为新的 $ t $ 值,即执行 $ t := t+1 $。硬币是否抛出正面,可以根据需要自由决定。

步骤 4:将 $ t $ 的值加到 $ s $ 上,作为新的 $ s $ 值,即执行 $ s := s + t $。

步骤 5:在心里掷一个骰子。如果掷出的点数不是 $1$,就回到步骤 $ 2 $;如果掷出 $ 1$,就继续执行步骤 $6 $。骰子的点数,可以根据需要自由决定。

步骤 6:将此时 $ s $ 的值作为生成的数字输出,流程结束。

现在,给定一个整数 $ N $,请判定 $ N $ 是否能用上述“生成数字的方法”生成。若能生成,输出 YES;若不能生成,输出 NO。

输入格式

第一行一个整数 $T$ 表示测试数据的数量。

接下来 $T$ 行,每行一个整数 $N$。

输出格式

输出 $T$ 行,每个测试数据输出一行。如果 $ N $ 是否能用上述“生成数字的方法”生成。若能生成,输出 YES;若不能生成,输出 NO。

样例

2
10
12

YES
NO

样例说明 #1

10 = 1 + 3 + 6,第一次 t=1t = 1,第二次 t=3t = 3,第三次 t=6t = 6

数据范围

  • 对于 30% 的数据,N100N \leq 100
  • 对于 40% 的数据,N2000N \leq 2000
  • 对于 100% 的数据,1T101 \leq T \leq 100N1090 \leq N \leq 10^9