Ctrl K

Пополам или вдвое

Сложная
Дан массив положительных целых чисел values. С любым элементом можно сколько угодно раз делать одно из двух действий: - если число **чётное**, разделить его на 2; - если число **нечётное**, умножить его на 2. **Разброс** массива — это разность между его наибольшим и наименьшим элементами. Верните наименьший разброс, которого можно добиться такими действиями.
Пример 1
values=[6, 3, 10] → 1

Тройку удвоим до 6, а 10 разделим пополам до 5: получится [6, 6, 5], разброс 6 − 5 = 1. Нулевого разброса не добиться: 10 может стать только 10 или 5, а 3 — только 3 или 6.

Пример 2
values=[7, 28] → 0

Делим 28 пополам дважды и получаем 7 — числа сравнялись.

Пример 3
values=[5, 9, 40] → 1
Ограничения
  • 2 ≤ len(values) ≤ 5·10⁴
  • 1 ≤ values[i] ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамые загруженные работники в круге СложнаяКонтур городской застройки СложнаяНаращиваем капитал проектами СложнаяБольше заказов к сроку СложнаяСамый узкий отрезок для всех списков Сложная
загружаем Python…
Вход
values=[6, 3, 10]
Ожидается
1

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