Ctrl K

Сжать список остатками

Средняя
Дан список положительных целых чисел values. За один ход можно: 1. выбрать два элемента на разных позициях, оба больше нуля, — x и y (порядок важен); 2. убрать оба из списка; 3. добавить в конец список остаток x mod y. Каждый ход уменьшает длину списка на один. Ходов можно сделать сколько угодно, в том числе ни одного. Верните наименьшую длину, до которой можно сжать список.
Пример 1
values=[6, 4, 6] → 1

Берём 6 и 4: 6 mod 4 = 2, список [6, 2]. Затем 2 и 6: 2 mod 6 = 2, список [2]. Остался один элемент.

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

Все числа делятся на 3, и меньше тройки ничего положительного не получить. Пара (3, 9) даёт 3, затем две пары троек дают два нуля: [0, 0]. Лучше нельзя.

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

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