Problem
Original anzeigen (Englisch)Für jede Brettgröße k von 1 bis n sollst du die ungeordneten Paare verschiedener Felder auf einem k×k-Brett zählen, auf denen zwei Springer einander nicht angreifen können. Ein Springer zieht zwei Felder in einer Richtung und eines in der anderen.
. x . x .
x . . . x
. . K . .
x . . . x
. x . x .K markiert einen Springer und x dessen mögliche Zielfelder, sofern diese auf dem Brett liegen. Das Vertauschen der beiden Springer ergibt keine neue Platzierung.
Implementiere two_knights(n).
Eingabe
n: Die größte zu betrachtende Brettgröße.
Ausgabe
Gib n Zahlen in Reihenfolge zurück, für die Brettgrößen 1 bis n.
Einschränkungen
1 ≤ n ≤ 10.000. Die Anzahlen passen in vorzeichenbehaftete 64-Bit-Ganzzahlen.
Beispiele
Eingabe:
n = 3
Erwartete Ausgabe:
expected = [0, 6, 28]
Eingabe:
long long n = 3;
Erwartete Ausgabe:
std::vector<long long> expected = {0, 6, 28};
Eingabe:
long n = 3;
Erwartete Ausgabe:
long[] expected = new long[] {0, 6, 28};
Erläuterung
Ein 1×1-Brett kann keine zwei Springer aufnehmen. Ein 2×2-Brett hat sechs Paare und keine Angriffe. Ein 3×3-Brett hat 36 Paare, von denen acht angreifen, sodass 28 übrig bleiben.
Eingabe:
n = 1
Erwartete Ausgabe:
expected = [0]
Eingabe:
long long n = 1;
Erwartete Ausgabe:
std::vector<long long> expected = {0};
Eingabe:
long n = 1;
Erwartete Ausgabe:
long[] expected = new long[] {0};
Erläuterung
Es werden zwei verschiedene Felder benötigt, aber das Brett hat nur eines.
Referenzen
Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.