#CF165E. 兼容数字(Compatible Numbers)

0

兼容数字(Compatible Numbers)

兼容数字(Compatible Numbers)

题目描述

如果两个整数 xx 和 yy 的按位与运算结果为 00,即 x & y=0x\ \&\ y=0,那么它们是兼容的。例如,90 (10110102)90\ (1011010_2) 和 36 (1001002)36\ (100100_2) 是兼容的,因为 10110102 & 1001002=021011010_2\ \&\ 100100_2=0_2,而 3 (112)3\ (11_2) 和 6 (1102)6\ (110_2) 则不兼容,因为 112 & 1102=10211_2\ \&\ 110_2=10_2。

给定一个整数数组 a1,a2,…,ana_1,a_2,\ldots,a_n。你需要判断,对于每个数组元素,是否存在数组中的其它元素跟它兼容?如果存在兼容元素,还需要输出一个满足条件的元素。

输入格式

第一行包含一个整数 nn(1≤n≤1061 \leq n \leq 10^6),表示数组的元素个数。第二行包含 nn 个用空格分隔的整数 a1,a2,…,ana_1,a_2,\ldots,a_n(1≤ai≤4⋅1061 \leq a_{i} \leq 4 \cdot 10^6),表示数组元素。数组中的数字可以重复。

输出格式

输出 nn 个整数 ans1 ans2 … ansnans_1\ ans_2\ \ldots\ ans_n。如果 aia_i 与数组 a1,a2,…,ana_1,a_2,\ldots,a_n 中不存在任何其它元素兼容,则 ansians_i 等于 −1-1。否则 ansians_i 是与 aia_i 兼容的任一数组中的元素,即满足 ai & ansi=0a_i\ \&\ ans_i=0,且 ansians_i 出现在数组中。

样例输入 #1

2
90 36

样例输出 #1

36 90

样例输入 #2

4
3 6 3 6

样例输出 #2

-1 -1 -1 -1

样例输入 #3

5
10 6 9 8 2

样例输出 #3

-1 8 2 2 8

数据范围

由 ChatGPT 5 翻译

知识点与难度

本题涉及的知识点从属于 CSP-S,难度(CF Rating):1900。


测试点分布

Subtask 分值 测试点编号 说明
0 15 1~3 样例
1 20 4~9 小规模 n≤1000 / 特殊: 全 -1 或 含 2 的幂次
2 10~14 中等规模 n≤50000, a_i≤10^5
3 15~19 大规模 n≤300000, a_i≤4×10^6
4 25 20~25 满规模 n=500000, a_i≤4×10^6 22位 SOS DP 压力测试

出处:原题链接