AND and OR官方中文
题目描述
官方中文给出一个长度为 $n$ 的数组 $a = a_1,a_2,\dots,a_n$ 和一个非负整数 $k$,请判断是否存在一个二元组 $(i,j)\left(1\le i < j\le n\right)$ 满足下面的表达式: $(a_i \operatorname{and}^\texttt{[1]}a_j) + (a_i\operatorname{or}^\texttt{[2]}a_j) = k$ 若存在,请给出一个满足要求的二元组 $(i,j)$ ,否则输出 $-1$。 【名词解释】 $\operatorname{and}:指位运算中的按位或(Bitwise OR),对两个整数的二进制表示按位进行或运算。如果您需要更多位运算相关的知识,可以参考 OI-Wiki的相关章节。官方中文$$^\texttt{[1]}$:指位运算中的按位与(Bitwise AND),对两个整数的二进制表示按位进行与运算。如果您需要更多位运算相关的知识,可以参考 [**OI-Wiki的相关章节**](https://oi-wiki.org/math/bit/#%E4%B8%8E%E6%88%96%E5%BC%82%E6%88%96)。 $\operatorname{or}$$^\texttt{[2]}$
输入格式
官方中文每个测试文件均包含多组测试数据。第一行输入一个整数 $t\ (1\le t\le 10^4)$ 代表数据组数,每组测试数据描述如下:官方中文
第一行输入两个整数 $n,k\ (2\le n\le 2\times10^5;\,0\le k\le10^9)$,表示数组的长度、给定的非负整数。
第二行输入 $n$ 个非负整数 $a_1,a_2,\ldots,a_n\ (0\le a_i\le10^9)$,表示该数组。官方中文
除此之外,保证单个测试文件的 $n$ 总和不超过 $2\times10^5$。官方中文
输出格式
官方中文如果存在满足要求的二元组,输出两个正整数 $i,j\ (1\le i<j\le n)$ ,表示找到的二元组 $(i,j)$;否则,输出 $-1$。官方中文
如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。官方中文
样例
5
5 30
15 0 15 0 15
5 13
17 3 5 6 10
3 6
1 2 3
4 12
1 2 4 8
2 1000000000
0 01 3
2 5
-1
3 4
-1题面与样例版权归 牛客竞赛 及出题人所有;中文翻译由 AI 生成(官方原文),如有出入请以原文为准。