Einführung
Beobachten wir die folgende Reihenfolge (nicht negative ganze Zahlen):
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ...
Nehmen wir zum Beispiel die ersten drei Zahlen. Das sind 0, 1, 2
. Die in dieser Sequenz verwendeten Nummern können auf sechs verschiedene Arten bestellt werden:
012 120
021 201
102 210
Nehmen wir also an, dass F (3) = 6 ist . Ein weiteres Beispiel ist F (12) . Dies enthält die Zahlen:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
Oder die verkettete Version:
01234567891011
Um die Anzahl der Möglichkeiten zu finden, dies neu anzuordnen, müssen wir uns zuerst die Länge dieser Zeichenfolge ansehen. Die Länge dieser Zeichenfolge beträgt 14
. Also berechnen wir 14! . Zum Beispiel können diejenigen jedoch Orte austauschen, ohne die endgültige Zeichenfolge zu stören. Es gibt 2 Nullen, also gibt es 2! Möglichkeiten, die Nullen auszutauschen, ohne die Reihenfolge zu stören. Es gibt auch 4, also gibt es 4! Möglichkeiten, die zu wechseln. Wir teilen die Summe durch diese beiden Zahlen:
Das hat 14! / (4! × 2!) = 1816214400 Möglichkeiten zum Anordnen der Zeichenfolge 01234567891011
. Wir können also schließen, dass F (12) = 1816214400 ist .
Die Aufgabe
Bei N wird F (N) ausgegeben . Für diejenigen, die keine Einführung brauchen. Um F (N) zu berechnen, verketten wir zuerst die ersten N nicht-negativen ganzen Zahlen (z. B. für N = 12 wäre die verkettete Zeichenfolge 01234567891011
) und berechnen die Anzahl der Möglichkeiten, diese Zeichenfolge anzuordnen.
Testfälle
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
Hinweis
Die Berechnung der Antwort muss innerhalb einer Frist von 10 Sekunden erfolgen . Brute-Forcing ist nicht zulässig .
Das ist Code-Golf , also gewinnt die Einsendung mit der geringsten Anzahl von Bytes!
10
Ziffern sind 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
. Zehn verschiedene Ziffern, also 10 !.
0
Fall hat meine Zählung abgebrochen (dumme leere Fäden).
F(N)
nicht der Fall ist O(N!)
und dass log F(N)
ist , O(log N!)
aber das ist nur Ahnungen ...
10
korrekt? Es fühlt sich an, als sollte es weniger als 10 sein, da hier die sich wiederholenden Ziffern beginnen.