CF165E Compatible Numbers
题目描述
如果两个整数 x 和 y 的按位与运算结果为 0,即 x & y=0,那么它们是兼容的。例如,90 (10110102) 和 36 (1001002) 是兼容的,因为 10110102 & 1001002=02,而 3 (112) 和 6 (1102) 则不兼容,因为 112 & 1102=102。
给定一个整数数组 a1,a2,…,an。你需要判断,对于每个数组元素,是否存在数组中的其它元素跟它兼容?如果存在兼容元素,还需要输出一个满足条件的元素。
输入格式
第一行包含一个整数 n(1≤n≤106),表示数组的元素个数。第二行包含 n 个用空格分隔的整数 a1,a2,…,an(1≤ai≤4⋅106),表示数组元素。数组中的数字可以重复。
输出格式
输出 n 个整数 ans1 ans2 … ansn。如果 ai 与数组 a1,a2,…,an 中不存在任何其它元素兼容,则 ansi 等于 −1。否则 ansi 是与 ai 兼容的任一数组中的元素,即满足 ai & ansi=0,且 ansi 出现在数组中。
输入输出样例 #1
输入 #1
2
90 36
输出 #1
36 90
输入输出样例 #2
输入 #2
4
3 6 3 6
输出 #2
-1 -1 -1 -1
输入输出样例 #3
输入 #3
5
10 6 9 8 2
输出 #3
-1 8 2 2 8
说明/提示
由 ChatGPT 5 翻译