1323:有限位二进制小数

时间限制: 2 S | 内存限制: 65536 KB
Accept: 0 | Submit: 0
[提交] [状态] [讨论版]
描述

二进制小数 0.11 = 2 ^ (-1) + 2 ^ (-2) = 0.5 + 0.25 = 0.75,其中 ^ 代表幂运算。

所以十进制下的小数 0.125d = 0.001b。

然而有很多十进制下的小数是无法用有限位的二进制表示的,类似十进制下的无限循环小数。

例如 0.2d = 0.(0011)b,其中括号中的四位数会一直循环。

现在罗少想要知道一个十进制小数能否由有限位二进制小数表示。

输入

第一行是一个正整数 T 代表测试案例的数量。(1 ≤ T ≤ 50)

每组案例包含一个十进制小数 n,保证 0 < n < 1。

对于 33% 的数据,n 的小数部分不会超过 3 位。

对于 66% 的数据,n 的小数部分不会超过 15 位。

对于 100% 的数据,n 的小数部分不会超过 1000 位。

输出

针对每组样例,若 n 能转成有限位二进制小数则输出YES,否则输出NO,然后换行。

样例输入

3

0.5

0.3

0.9375

样例输出

YES

NO

YES

HINT

n 不存在前导零或后导零,即 n 一定是以 “0.” 开头并且 n 的小数部分的最后一个数字一定是非 0 的。

来源
19-20(2)第5次线上赛