Вступ
Давайте спостерігатимемо таку послідовність (невід’ємні цілі числа):
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 !, оскільки саме тут починаються цифри, що повторюються.