Ctrl K

Дополнение XOR при укорачивании

Средняя
Дан массив неотрицательных целых чисел values и число bits; каждый элемент меньше 2^bits. Повторите len(values) раз: 1. Подберите число k, 0 ≤ k < 2^bits, при котором XOR всех текущих элементов массива и k максимален. Запишите k в ответ. 2. Удалите из массива последний элемент. Верните записанные числа в том порядке, в каком они получены.
Пример 1
values=[5, 1, 6], bits=3 → [5, 3, 2]

5 XOR 1 XOR 6 = 2, дополнение до 7 даёт 5. Убираем 6: 5 XOR 1 = 4, нужно 3. Убираем 1: остаётся 5, нужно 2. Ответ [5, 3, 2].

Пример 2
values=[3, 3], bits=2 → [3, 0]

Сначала XOR равен 0 — нужно 3. После удаления остаётся 3, добавлять нечего — 0.

Ограничения
  • 1 ≤ len(values) ≤ 10⁵
  • 1 ≤ bits ≤ 20
  • 0 ≤ values[i] < 2^bits
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПалиндром после пары правок СредняяXOR на отрезках СредняяРазрез на равные по XOR половины СредняяK-й по величине XOR угла СредняяПроизведения двоичных кусков Средняя
загружаем Python…
Вход
values=[5, 1, 6], bits=3
Ожидается
[5, 3, 2]

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