310410: CF1829D. Gold Rush
Description
Initially you have a single pile with $n$ gold nuggets. In an operation you can do the following:
- Take any pile and split it into two piles, so that one of the resulting piles has exactly twice as many gold nuggets as the other. (All piles should have an integer number of nuggets.)
![](https://espresso.codeforces.com/723dd5ce328f1a04932ecf7a71a71f198294eaa3.png)
One possible move is to take a pile of size $6$ and split it into piles of sizes $2$ and $4$, which is valid since $4$ is twice as large as $2$.
The first line contains an integer $t$ ($1 \leq t \leq 1000$) — the number of test cases.
The only line of each test case contains two integers $n$ and $m$ ($1 \leq n, m \leq 10^7$) — the starting and target pile sizes, respectively.
OutputFor each test case, output "YES" if you can make a pile of size exactly $m$, and "NO" otherwise.
You can output the answer in any case (for example, the strings "yEs", "yes", "Yes" and "YES" will be recognized as a positive answer).
ExampleInput11 6 4 9 4 4 2 18 27 27 4 27 2 27 10 1 1 3 1 5 1 746001 2984004Output
YES YES NO NO YES YES NO YES YES NO NONote
The first test case is pictured in the statement. We can make a pile of size $4$.
In the second test case, we can perform the following operations: $\{\color{red}{9}\} \to \{\color{red}{6},3\} \to \{4,2,3\}$. The pile that is split apart is colored red before each operation.
In the third test case, we can't perform a single operation.
In the fourth test case, we can't end up with a larger pile than we started with.
Input
题意翻译
# 题意简述 本题有 $t$ 组数据。对于每组数据,你都会得到 $n$ 个金币。 现在,你可以对这 $n$ 个金币进行分堆。每次分堆只能分成两堆,并且需要使分堆后的一堆恰好是另一堆的**两倍**。同时,分成的两堆都必须有**整数**个金币。 请你判断:在经过多次或不经过分堆后能否有任意一堆的金币数为 $m$。如果可以,请输出 `YES` 或其它任意的大小写形式;否则,请输出 `NO` 或其它任意的大小写形式。 ## 样例解释 对于样例一中的第一组数据,我们可以采用如图的形式分堆: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1829D/7d414b1e40fe9f84ac7152f64f7f831c73043b5b.png) 对于第二组数据,它可以采用如下的分堆方式: $$ \{\color{red}9\color{black}\}\to\{\color{red}6\color{black},3\}\to\{4,2,3\} $$ 在每次分堆前,被分开的堆被标为红色。 对于第三组数据,我们无法进行分堆操作。 对于第四组数据,我们不能把少的金币变成更多的一堆。 Translate by @[tianbiandeshenghuo11](/user/752485)Output
你最初有一堆包含n个金块。你可以进行以下操作:
- 选择任一堆并将其分成两堆,使得其中一个结果堆的金块数量是另一个的两倍(所有堆的金块数量都应该是整数)。
你需要判断是否可以通过零次或多次操作得到恰好m个金块的一堆。
输入数据格式:
第一行包含一个整数t(1 ≤ t ≤ 1000)——测试用例的数量。
每个测试用例仅包含一行,有两个整数n和m(1 ≤ n, m ≤ 10^7)——起始和目标堆的大小。
输出数据格式:
对于每个测试用例,如果你可以制作出恰好m个金块的一堆,则输出"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
```
注意:
- 第一个测试用例如题目描述所示,我们可以制作出大小为4的一堆。
- 第二个测试用例可以通过以下操作实现:{9} → {6,3} → {4,2,3}。每次操作前被分割的堆用红色标出。
- 第三个测试用例无法进行任何操作。
- 第四个测试用例无法得到比开始时更大的堆。题目大意: 你最初有一堆包含n个金块。你可以进行以下操作: - 选择任一堆并将其分成两堆,使得其中一个结果堆的金块数量是另一个的两倍(所有堆的金块数量都应该是整数)。 你需要判断是否可以通过零次或多次操作得到恰好m个金块的一堆。 输入数据格式: 第一行包含一个整数t(1 ≤ t ≤ 1000)——测试用例的数量。 每个测试用例仅包含一行,有两个整数n和m(1 ≤ n, m ≤ 10^7)——起始和目标堆的大小。 输出数据格式: 对于每个测试用例,如果你可以制作出恰好m个金块的一堆,则输出"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 ``` 注意: - 第一个测试用例如题目描述所示,我们可以制作出大小为4的一堆。 - 第二个测试用例可以通过以下操作实现:{9} → {6,3} → {4,2,3}。每次操作前被分割的堆用红色标出。 - 第三个测试用例无法进行任何操作。 - 第四个测试用例无法得到比开始时更大的堆。