mask = ans | (1<<b)
,统计满足 (x & mask) == mask
的元素个数(并在成功时把候选集合更新为这部分元素)。C/C++中的按位与运算符“&”是双目运算符,其功能是参与运算的两数各对应的二进制位相与,只有对应的两个二进制位都为 1 时,结果位才为 1 。参与运算的两个数均以补码出现。例如 的计算如下(右下数字 2 表示 2 进制): 000000112&000010102 现在,给你 n 个数字,请你从中挑选 2 个数字,使他们的按位与运算结果在所有可能的挑选方式中是最大的。
第一行包含一个正整数 n(2≤n≤300000),表示给定数字的数量。 接下来 n 行,每行包含 1 个整数 a(0≤a≤2000000000)$,表示一个给定的数字。
输出仅一行,包含一个数字,表示题目所求的最大按位与的结果。
输入
3
8
10
2
输出
8
说明
8 & 10=8 ,8 & 2=0 ,10 & 2=2,所以最大的一个结果是 8 。