问题 6536 --分金币

6536: 分金币★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 30  解决: 27
[提交][状态][命题人:]

题目描述

本题有 t 组数据。对于每组数据,你都会得到 n 个金币。

现在,你可以对这 n 个金币进行分堆。每次分堆只能分成两堆,并且需要使分堆后的一堆恰好是另一堆的两倍。同时,分成的两堆都必须有整数个金币。

请你判断:在经过多次或不经过分堆后能否有任意一堆的金币数为 m。如果可以,请输出 YES ;否则,请输出 NO。




样例解释

对于样例一中的第一组数据,我们可以采用如图的形式分堆:


对于第二组数据,它可以采用如下的分堆方式:

{9}→{6,3}→{4,2,3}

对于第三组数据,我们无法进行分堆操作。

对于第四组数据,我们不能把少的金币变成更多的一堆。

输入

一个t,表示数据组数
每行两个整数,n,m分别表示总金币数、目标金币数
1 <= t <= 1000
1 <= n, m <= 10^7

输出

在经过多次或不经过分堆后能否有任意一堆的金币数为 m。如果可以,请输出 YES ;否则,请输出 NO。 
样例输入
Copy
11
6 4
9 4
4 2
18 27
27 4
27 2
27 10
1 1
3 1
5 1
746001 2984004
样例输出
Copy
YES
YES
NO
NO
YES
YES
NO
YES
YES
NO
NO

提示

来源

[提交][状态]