Zurück zu den Herausforderungen
Mittel 0 gelöst 0% Erfolgsquote

Rechtwinkliges Dreieck – Produkt

Finde das größte Seitenprodukt eines rechtwinkligen Dreiecks mit ganzzahligen Seiten und gegebenem Umfang.

Das lernst du

  • Ganzzahlige rechtwinklige Dreiecke nach Umfang suchen
  • Drei Schleifen auf zwei reduzieren
  • Die pythagoreische Bedingung prüfen

Problem

Finde positive ganze Zahlen a < b < c mit a² + b² = c² und a + b + c = perimeter. Gib das größte Produkt a × b × c unter allen passenden Dreiecken zurück, oder −1, falls es keine gibt. Dies verallgemeinert die Aufgabe mit festem Umfang und behandelt explizit mehrere Lösungen.

Implementiere pythagorean_product(perimeter).

Eingabe

perimeter: Die geforderte Summe der drei Seiten.

Ausgabe

Gib das größte Produkt zurück, oder −1, wenn kein Dreieck passt.

Einschränkungen

3 ≤ perimeter ≤ 100.000. Produkte passen in vorzeichenbehaftete 64-Bit-Ganzzahlen.

Beispiele

Beispiel 1
Eingabe:
perimeter = 30

Erwartete Ausgabe:
expected = 780
Eingabe:
long long perimeter = 30;

Erwartete Ausgabe:
long long expected = 780;
Eingabe:
long perimeter = 30;

Erwartete Ausgabe:
long expected = 780;

Erläuterung

Das Dreieck ist (5, 12, 13): 25 + 144 = 169 und 5 + 12 + 13 = 30. Sein Produkt ist 780.

Beispiel 2
Eingabe:
perimeter = 11

Erwartete Ausgabe:
expected = -1
Eingabe:
long long perimeter = 11;

Erwartete Ausgabe:
long long expected = -1;
Eingabe:
long perimeter = 11;

Erwartete Ausgabe:
long expected = -1;

Erläuterung

Keine aufsteigenden positiven ganzzahligen Seiten eines rechtwinkligen Dreiecks ergeben die Summe 11.

So gehst du vor

Versuch es zuerst allein und öffne dann einen Hinweis nach dem anderen.

Hinweis 1

Nur bestimmte Umfänge können ein rechtwinkliges Dreieck bilden, also grenze die Suche zuerst mit der Seiten-Summe ein.

Hinweis 2

Leite für jede mögliche kürzeste Seite die anderen beiden Seiten aus dem Umfang ab und prüfe die Rechtwinkligkeit.

Hinweis 3

Es kann mehr als ein Dreieck passen; behalte das größte Produkt und gib no-solution zurück, wenn nichts gültig ist.

Erwartete Komplexität

Zeit O(perimeter^2), zusätzlicher Speicher O(1)

Referenzen

Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.

Von anderen lernen

Community-Lösungen

Noch keine veröffentlichten Lösungen. Löse die Aufgabe und teile als Erster eine Lösung.