Ctrl K

XOR близкой пары

Лёгкая
Дан массив положительных целых чисел values. Назовём два числа x и y *близкими*, если |x − y| ≤ min(x, y) — то есть большее не более чем вдвое больше меньшего. Выберите из массива два близких числа так, чтобы их побитовое исключающее ИЛИ (XOR) было максимальным, и верните это значение. Один и тот же элемент можно взять дважды.
Пример 1
values=[3, 5, 6, 12] → 10

Близкие пары: (3, 5), (3, 6), (5, 6), (6, 12) и каждое число само с собой. Наибольший XOR даёт 6 XOR 12 = 10.

Пример 2
values=[4, 20] → 0

20 − 4 = 16 больше, чем 4, так что 4 и 20 не близки. Остаются пары числа с самим собой, а их XOR равен 0.

Пример 3
values=[7, 8, 9, 15] → 15
Ограничения
  • 1 ≤ len(values) ≤ 100
  • 1 ≤ values[i] ≤ 10⁴
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиНаибольший XOR близкой пары СложнаяСамая непохожая пара СредняяСлова для головоломок СложнаяЛучший XOR по цепочке начальников СложнаяПовтор в пределах окна Лёгкая
загружаем Python…
Вход
values=[3, 5, 6, 12]
Ожидается
10

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 120 тестов на сервере, включая скрытые.