Ctrl K

Разные бейджи для команды

Сложная
На конференцию едет команда из n человек. Организаторы печатают бейджи 40 цветов, цвета пронумерованы от 1 до 40, и каждого цвета хватит на одного человека. likes[i] — список цветов, которые согласен носить i-й участник. Посчитайте, сколькими способами можно выдать каждому участнику по одному бейджу так, чтобы каждый получил цвет из своего списка и никакие двое не получили одинаковый цвет. Способы различаются, если хотя бы у одного участника разный цвет. Ответ может быть большим — верните его по модулю 10⁹ + 7.
Пример 1
likes=[[2, 7], [7], [1, 2]] → 1

Второму достаётся 7, тогда первому — 2, а третьему остаётся только 1. Способ один.

Пример 2
likes=[[5, 6], [5, 6, 9]] → 4

Пары (5, 6), (5, 9), (6, 5) и (6, 9) — 4 способа.

Пример 3
likes=[[3], [3], [1, 2]] → 0

Первые двое согласны только на цвет 3, а одинаковых бейджей быть не может.

Ограничения
  • n = len(likes)
  • 1 ≤ n ≤ 10
  • 1 ≤ len(likes[i]) ≤ 40
  • 1 ≤ likes[i][j] ≤ 40
  • Цвета внутри одного списка likes[i] не повторяются
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКак рассчитаться за меньше переводов СложнаяДве группы с одинаковым средним СложнаяСклейка фрагментов СложнаяЦепочки с квадратными суммами СложнаяСамая маленькая команда со всеми навыками Сложная
загружаем Python…
Вход
likes=[[2, 7], [7], [1, 2]]
Ожидается
1

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