#CF1829D. Gold Rush

    ID: 6850 传统题 1000ms 256MiB 尝试: 2 已通过: 1 难度: 10 上传者: 标签>暴力深度优先搜索动态规划模拟CodeforcesCodeforces Round 871(Div4)Div4DCF1829D1000

Gold Rush

题目描述

最初你有一堆包含 nn 个金块的金堆。在一次操作中,你可以进行如下操作:

  • 选择任意一堆金块,将其分成两堆,使得其中一堆的金块数恰好是另一堆的两倍。(所有堆的金块数都必须是整数。)


    一种可能的操作是将一堆大小为 66 的金堆分成大小为 2244 的两堆,这是合法的,因为 44 恰好是 22 的两倍。

你能否通过零次或多次操作,得到一堆恰好包含 mm 个金块的金堆?

输入格式

第一行包含一个整数 tt1t10001 \leq t \leq 1000),表示测试用例的数量。

每个测试用例的一行包含两个整数 nnmm1n,m1071 \leq n, m \leq 10^7),分别表示初始金堆的大小和目标金堆的大小。

输出格式

对于每个测试用例,如果你能得到恰好 mm 个金块的一堆,输出 "YES";否则输出 "NO"。

你可以用任意大小写输出答案(例如,"yEs"、"yes"、"Yes" 和 "YES" 都会被识别为肯定答案)。

样例

11
6 4
9 4
4 2
18 27
27 4
27 2
27 10
1 1
3 1
5 1
746001 2984004
YES
YES
NO
NO
YES
YES
NO
YES
YES
NO
NO

样例说明

第一个测试用例如题面所示。我们可以得到一堆大小为 44 的金堆。

在第二个测试用例中,我们可以进行如下操作:$\{\color{red}{9}\} \to \{\color{red}{6},3\} \to \{4,2,3\}$。每次被分割的金堆用红色标出。

在第三个测试用例中,我们无法进行任何一次操作。

在第四个测试用例中,我们无法得到比初始金堆更大的金堆。

由 ChatGPT 4.1 翻译

来源

Codeforces 1829D,英文题名 Gold Rush。