Ctrl K

Цепочки делителей

Средняя
Дан массив values из различных натуральных чисел. Расставим все его числа в некотором порядке. Назовём такую расстановку **цепочкой делителей**, если для любых двух соседних чисел одно из них делится на другое без остатка. Посчитайте, сколько существует различных расстановок-цепочек. Ответ может быть очень большим, поэтому верните его по модулю 10⁹ + 7.
Пример 1
values=[4, 5, 20] → 2

Подходят [4, 20, 5] и [5, 20, 4]: 20 делится и на 4, и на 5, а 4 и 5 соседями стоять не могут.

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

Любые два числа делят одно другое, поэтому годятся все 3! = 6 перестановок.

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

Ни 2 не делит 7, ни 7 не делит 2 — подходящих порядков нет.

Ограничения
  • 2 ≤ len(values) ≤ 14
  • 1 ≤ values[i] ≤ 10⁹
  • Все числа в values различны
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКвадратная рамка из палочек СредняяРассадка с делимостью СредняяСамая дешёвая корзина с наборами СредняяГруппы с равными суммами СредняяМеньше всего пешком до самокатов Средняя
загружаем Python…
Вход
values=[4, 5, 20]
Ожидается
2

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