题目大意:
求 (max{a_i&a_j}quad(i,jin {1cdots n}))。
正文:
在位运算中,高位的数若选了得到的数肯定更大,那就将数列从大到小排序,比较相邻的两数就行了。
代码:
int main()
{
scanf ("%d", &n);
for (int i = 1; i <= n; i++)
scanf("%lld", &a[i]);
sort (a + 1, a + 1 + n, cmp);
for (int i = 1; i < n; i++)
{
if((a[i + 1] & a[i]) >= ans)
ans = (a[i + 1] & a[i]);
else break;
}
printf("%lld", ans);
return 0;
}