题目要求判断是否存在四个互不相同的下标 i,j,p,q,使得
ai⊕aj⊕ap⊕aq=k其中 ⊕ 表示按位异或。
给定一个长度为 n 的整数数组 a1,a2,...,an 与整数 k ,请判断是否存在四个两两不同的下标 i,j,p,q (即 i,j,p,q 互不相同),使得 ai⊕aj⊕ap⊕aq=k。若存在输出 Yes,否则输出 No。
名词解释:
按位异或(xor,记作 ⊕):对每一位二进制独立计算,相同为 0 ,不同为 1 。
两两不同:四个下标互不相同,不可复用同一位置的元素。
每个测试文件均包含多组测试数据。第一行输入一个整数 T(1≤T≤103) 代表数据组数,每组测试数据描述如下:
第一行输入两个整数
n(4≤n≤103),k(0≤k≤109)。
第二行输入 n 个整数,依次为
a1,a2,...,an(0≤ai≤109)。
所有测试中 ∑n≤4×103
输出 T 行,若存在满足条件的四元组,输出 Yes;否则输出 No 。
输入
3
4 4
1 2 3 4
5 0
1 2 4 8 16
4 7
1 2 3 7
输出
Yes
No
Yes
说明
样例 1:取 1,2,3,4,有 1⊕2⊕3⊕4=4。
样例 2:不存在四个两两不同的数使其异或为 0。
样例 3:取 1,2,3,7,有 1⊕2⊕3⊕7=7。