Ctrl K

Делить, пока не станет по порядку

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

Наибольший собственный делитель 12 — это 6, и 12 / 6 = 2. Получаем [2, 5, 9] за одну операцию.

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

4 превращается в 2, затем 6 превращается в 2: [2, 2, 3], две операции.

Пример 3
values=[5, 3] → -1

5 — простое число, его наибольший собственный делитель 1, деление ничего не меняет. Порядок не исправить.

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

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