Ctrl K

Слияние соседей с общим делителем

Сложная
Дан массив положительных чисел values. Пока в нём есть два **соседних** числа с общим делителем больше 1, заменяйте эту пару одним числом — их наименьшим общим кратным. Когда таких пар не останется, процесс заканчивается. Можно доказать, что итоговый массив не зависит от порядка слияний. Верните итоговый массив.
Пример 1
values=[10, 4, 9, 7, 21] → [20, 63]

10 и 4 сливаются в 20. 7 и 21 сливаются в 21, а 9 и 21 — в 63. Числа 20 и 63 взаимно просты. Итог — [20, 63].

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

5 и 15 дают 15, затем 3 и 15 тоже дают 15. Оставшиеся 15 и 2 взаимно просты.

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

Единица взаимно проста с любым числом, сливать нечего.

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

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