Ctrl K

Единицы через НОД соседей

Средняя
Дан массив положительных целых чисел values длины n. За одну операцию можно выбрать два соседних элемента и заменить один из них (любой на ваш выбор) их наибольшим общим делителем (НОД). Верните наименьшее число операций, после которого все элементы массива равны 1, или -1, если этого добиться нельзя.
Пример 1
values=[6, 10, 15] → 4

Ни у одной пары соседей НОД не равен 1, а у всей тройки равен. Первая единица появляется за 2 операции: [6, 10, 15] → [6, 5, 15] → [1, 5, 15]. Ещё 2 операции растягивают её вправо: [1, 1, 15] → [1, 1, 1]. Итого 4.

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

Единица уже есть, и каждое из трёх остальных чисел превращается в 1 одной операцией с соседом-единицей.

Пример 3
values=[6, 9, 12] → -1

Все числа делятся на 3, и любой НОД тоже будет делиться на 3, так что единица не появится никогда. Ответ -1.

Ограничения
  • 2 ≤ n ≤ 50
  • 1 ≤ values[i] ≤ 10⁶
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПростые числа до границы СредняяРамки одной формы СредняяОтрезки на графике СредняяКуски с общим делителем СредняяОтрезки с заданным НОД Средняя
загружаем Python…
Вход
values=[6, 10, 15]
Ожидается
4

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