Bei einer gegebene m
von n
Schokoriegel, m,n
positive, Ausgabe der Anzahl der Möglichkeiten , die Bar , in die Pause mn
1 von 1 Stück , wo jede Pause auf einem Gitternetz auftritt.
Ordnung ist wichtig. Die Stücke sind auch unterscheidbar, so dass die beiden Stücke an beiden Enden einer 1 x 3-Schokoladentafel nicht gleichwertig sind.
Zum Beispiel haben wir für einen 2 mal 2 Block:
_ _ _ _ _ _ _ _
|_‖_| -> |‗| |_| -> |_| |‗| -> |_| |_|
|_‖_| |_| |_| _ |_| _ _
|_| |_| |_|
_ _ _ _ _ _ _ _
|_‖_| -> |_| |‗| -> |‗| |_| -> |_| |_|
|_‖_| |_| |_| |_| _ _ _
|_| |_| |_|
_ _ _ _ _ _ _ _
|‗|‗| -> |_‖_| -> |_| |_| -> |_| |_|
|_|_| _ _ _ _ _ _
|_|_| |_‖_| |_| |_|
_ _ _ _ _ _ _ _
|‗|‗| -> |_|_| -> |_‖_| -> |_| |_|
|_|_| _ _ _ _ _ _
|_‖_| |_| |_| |_| |_|
Daher gibt es 4 Möglichkeiten, eine 2 mal 2 Schokoladentafel aufzubrechen.
Regeln
Die Eingabe erfolgt über zwei Ganzzahlen (Funktionseingabe, STDIN, Befehlszeile oder ähnliches). Geben Sie eine einzelne Zahl aus, die Anzahl der Möglichkeiten zum Aufteilen des Schokoladenriegels.
Da die Zahlen ziemlich schnell ansteigen, machen Sie sich keine Sorgen, wenn die Ausgabe die Ganzzahlgrenzen Ihrer Sprache überschreitet - Ihre Übermittlung ist gültig, solange der Algorithmus theoretisch für alle möglichen Eingaben funktioniert.
Testfälle
Die Ausgabe hängt nicht von der Reihenfolge von ab m,n
, daher werden die Testfälle so aufgelistet m <= n
.
1 1 -> 1
1 2 -> 1
1 3 -> 2
1 4 -> 6
1 5 -> 24
1 10 -> 362880
2 2 -> 4
2 3 -> 56
2 4 -> 1712
2 5 -> 92800
2 10 -> 11106033743298560
3 3 -> 9408
3 4 -> 4948992
3 5 -> 6085088256
3 10 -> 76209753666310470268511846400
4 4 -> 63352393728
A261964 sind die Schokoladennummern, die in einem Dreieck so angeordnet sind, dass jede Zeile der Summe entspricht m+n
.
options(expressions=...)
und argument--max-ppsize=
) würde zu einem längeren Code als diesem führen.