Ctrl K

Сортировка обменами по общему делителю

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

15 и 10 делятся на 5, 4 и 10 — на 2, 6 и 15 — на 3: все числа связаны, и их можно переставить в любом порядке, например получить [4, 6, 10, 15].

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

У 7 нет общих делителей больше 1 ни с 9, ни с 3, так что оно не сдвинется. Но оно и так стоит там, где ему место после сортировки, а 9 и 3 можно поменять: получится [3, 7, 9].

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

11 нельзя сдвинуть с места, а в отсортированном массиве оно должно оказаться последним.

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

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