题目背景
English statement. You must submit your code at the Chinese version of the statement.
住在呼和浩特的小 R 很久以前就学会了异或。异或使用符号 ⊕ 表示,在 C++ 中可用符号 ^
表示。非负整数 x 和 y 的异或是指对它们二进制表示中的每一位进行如下运算得到的结果:
- 若 x 和 y 的第 k 个二进制位相同,结果的第 k 个二进制位为 0;
- 若 x 和 y 的第 k 个二进制位不同,结果的第 k 个二进制位为 1。
使用 (X)10 表示十进制数 X,(Y)2 表示二进制数 Y,因为 (12)10=(1100)2,(10)10=(1010)2,所以 (12)10⊕(10)10=(1100)2⊕(1010)2=(0110)2=(6)10。
住在银川的小 F 想用这道题难倒小 R 但失败了,现在小 F 又想用这道题为难你,不能让他的阴谋得逞!
题目描述
给定整数 n 和 m,判断是否存在满足下列条件的数列 a。本题中数列元素的下标从 1 开始。
输入格式
本题有多组测试数据。
第一行输入一个正整数 T,表示测试数据组数。
对于每组测试数据,输入一行两个整数 n,m。
输出格式
对于每组测试数据,输出一行一个字符串。如果存在满足条件的数列 a,输出 Yes
;否则输出 No
。
提示
「样例解释 #1」
对于第一组测试数据,数列 a 可以是 [3,3,3],此时 a1⊕a2⊕a3=3⊕3⊕3=3。
对于第二组测试数据,数列 a 可以是 [2,2,2,2,2],此时 a1⊕a2⊕a3⊕a4⊕a5=2⊕2⊕2⊕2⊕2=2。
对于第三组和第四组测试数据,可以证明不存在满足条件的数列。
「数据范围」
测试点编号 |
T≤ |
n≤ |
m≤ |
1∼2 |
5 |
0 |
109 |
3∼4 |
109 |
3 |
5 |
105 |
109 |
对于所有测试数据,1≤T≤105,0≤n≤109,2≤m≤109。