Ctrl K

Номер расстановки

Средняя
Массив order длины n — расстановка чисел от 1 до n: каждое встречается ровно один раз. Выпишем все n! расстановок этих чисел в лексикографическом порядке (как слова в словаре) и пронумеруем с нуля. Верните номер расстановки order в этом списке. Номер может быть огромным, поэтому верните его остаток от деления на 10⁹ + 7.
Пример 1
order=[2, 3, 1] → 3

Все расстановки по порядку: [1,2,3], [1,3,2], [2,1,3], [2,3,1], ... — наша стоит на позиции 3.

Пример 2
order=[1] → 0

Расстановка из одного числа всего одна, её номер 0.

Пример 3
order=[4, 1, 2, 3] → 18

Перед ней идут все 3 · 3! = 18 расстановок, начинающихся с 1, 2 или 3, а среди начинающихся с 4 она первая.

Ограничения
  • 1 ≤ n ≤ 10⁵
  • order содержит каждое число от 1 до n ровно один раз
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиЕдиниц больше, чем нулей СредняяМеньшие справа СложнаяСуммы отрезков в заданной полосе СложнаяПары с крутым спадом СложнаяЦена расстановки на полке Сложная
загружаем Python…
Вход
order=[2, 3, 1]
Ожидается
3

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