Вступление
Давайте рассмотрим следующую последовательность (неотрицательные целые числа):
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ...
Например, давайте возьмем первые три числа. Это 0, 1, 2. Числа, используемые в этой последовательности, можно упорядочить шестью различными способами:
012 120
021 201
102 210
Итак, допустим, что F (3) = 6 . Другой пример - F (12) . Это содержит номера:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
Или каскадная версия:
01234567891011
Чтобы найти количество способов перестроить это, нам сначала нужно взглянуть на длину этой строки. Длина этой строки является 14. Итак, мы вычисляем 14! , Однако, например, те могут поменяться местами, не нарушая окончательную строку. Есть 2 ноля, значит, 2! способы обнулить нули, не нарушая порядок. Также есть 4, так что есть 4! способы поменять. Мы делим сумму на эти два числа:
Это имеет 14! / (4! × 2!) = 1816214400 способов расстановки строк 01234567891011. Таким образом, мы можем сделать вывод, что F (12) = 1816214400 .
Задание
Учитывая N , выведите F (N) . Для тех, кто не нуждается в представлении. Чтобы вычислить F (N), мы сначала конкатенируем первые N неотрицательных целых чисел (например, для N = 12 будет конкатенированная строка 01234567891011) и вычисляем количество способов упорядочить эту строку.
Контрольные примеры
Input: Output:
0 1
1 1
2 2
3 6
4 24
5 120
6 720
7 5040
8 40320
9 362880
10 3628800
11 119750400
12 1816214400
13 43589145600
14 1111523212800
15 30169915776000
Заметка
Вычислительный ответ должен быть вычислен в течение срока 10 секунд , скотина незначащих будет запрещен .
Это код-гольф , поэтому выигрывает представление с наименьшим количеством байтов!
10цифры 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Десять разных цифр, так что результат 10!
0дело сбрасывало мой счет (глупые пустые строки).
F(N)это не O(N!)и что log F(N)есть , O(log N!)но это только предчувствия ...
10правильного? Такое ощущение, что должно быть меньше 10 !, потому что именно здесь начинаются повторяющиеся цифры.