Problem
Original anzeigen (Englisch)Finde alle Tripel aus positiven ganzen Zahlen a < b < c, für die a² + b² = c² und a + b + c = perimeter gilt. Gib jedes Tripel als [a, b, c] zurück, sortiert nach aufsteigendem a und dann b. Permutationen derselben Seiten dürfen nicht enthalten sein.
Implementiere pythagorean_triplets(perimeter).
Eingabe
perimeter: Die geforderte Summe aller drei Seiten.
Ausgabe
Gib eine Liste der Tripel in der angegebenen Reihenfolge zurück.
Einschränkungen
3 ≤ perimeter ≤ 100.000. Gib eine leere Liste zurück, falls kein Dreieck die Bedingungen erfüllt.
Beispiele
Eingabe:
perimeter = 30
Erwartete Ausgabe:
expected = [
[5, 12, 13]
]
Eingabe:
long long perimeter = 30;
Erwartete Ausgabe:
std::vector<std::vector<long long>> expected = {
{5, 12, 13}
};
Eingabe:
long perimeter = 30;
Erwartete Ausgabe:
long[][] expected = new long[][] {
new long[] {5, 12, 13}
};
Erläuterung
5 + 12 + 13 = 30 und 5² + 12² = 13². Dies ist das einzige passende Tripel.
Eingabe:
perimeter = 11
Erwartete Ausgabe:
expected = []
Eingabe:
long long perimeter = 11;
Erwartete Ausgabe:
std::vector<std::vector<long long>> expected = {};
Eingabe:
long perimeter = 11;
Erwartete Ausgabe:
long[][] expected = new long[][] {};
Erläuterung
Kein streng wachsendes Tripel aus positiven ganzen Zahlen mit rechtwinkligem Dreieck ergibt die Summe 11.
Referenzen
Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.