#P3014. 异或训练
异或训练
Description
安安最近在学习异或运算,现在他学习异或运算遇到了瓶颈,所以他去找安妹一块儿探讨异或问题。
安妹对异或运算理解的非常透彻,为了加深安安对异或运算的理解,决定提出Q个问题让安安解决。
问题是这样的:安妹给出两个正整数x,n,问安安能不能在 0∼n内找到两个数,使他们的异或值为 x。
安妹虽然提出了 Q个问题,但是她并没有答案,请你帮花椰妹计算出每个问题的答案。
异或是在两个整数的二进制对应位上进行运算,运算规则如下:
- 0 xor 0=0
- 0 xor 1=1
- 1 xor 0=1
- 1 xor 1=0
在C++
语言中,异或是由^
符号表示,例如:ans = 3 ^ 8;
则ans = 11
。
数据范围
- 对于100%的数据,有1≤Q≤10⁵,1≤x,n≤10⁹。
Input Format
第一行一个整数Q,表示 共提出了Q个问题。
下面Q行,第 i行有两个正整数x,n表示 第i个问题。
Output Format
输出Q行,第i
行有一个字符,Y
表示第i
个问题可以找到两个合法的数,N
表示第i
个问题不能找到两个合法的数。
3
2 4
5 4
6 3
Y
Y
N
Hint
样例解释
- 对于第一个问题,0⊕2=2;
- 对于第二个问题,1⊕4=5;
- 对于第三个问题,不能在区间[0,3]中找出两个数,使它们的两个数异或结果为6。