Problem
Original anzeigen (Englisch)Stelle einen Bruch als [Zähler, Nenner] dar. Wende die Operation auf den ersten und zweiten Bruch an: addieren, subtrahieren, multiplizieren oder dividieren. Für den Betrag verwende nur den ersten Bruch. Für Potenzen hebe den ersten Bruch auf den ganzzahligen Exponenten und ignoriere den zweiten. Gib das Ergebnis in vollständig gekürzter Form mit positivem Nenner zurück. Normiere Null zu [0, 1]. Alle Divisionen und negativen Potenzen in gültigen Eingaben sind definiert.
Implementiere rational_arithmetic(operation, first, second, exponent).
Eingabe
operation: Der Name der Operation.
first: Zwei ganze Zahlen, die den ersten Bruch darstellen.
second: Zwei ganze Zahlen, die den zweiten Bruch darstellen; verwende [0, 1], wenn nicht benötigt.
exponent: Der Exponent für Potenzen; bei anderen Operationen 0 verwenden.
Ausgabe
Gib [Zähler, Nenner] in gekürzter Form mit positivem Nenner zurück.
Einschränkungen
operation ist add, subtract, multiply, divide, absolute oder power. Beide Bruchkomponenten haben einen Betrag von höchstens 100; Nenner sind ungleich null. −6 ≤ exponent ≤ 6. Bei divide hat der zweite Bruch einen Zähler ungleich null. Bei einer negativen Potenz hat der erste Bruch einen Zähler ungleich null. Die 0. Potenz ist [1, 1], einschließlich 0⁰ gemäß dieser Aufgabenstellung. Alle Werte passen in ein vorzeichenbehaftetes 64-Bit-Integer.
Beispiele
Eingabe:
first = [1, 6]
second = [1, 4]
exponent = 0
operation = "add"
Erwartete Ausgabe:
expected = [5, 12]
Eingabe:
std::vector<long long> first = {1, 6};
std::vector<long long> second = {1, 4};
long long exponent = 0;
std::string operation = "add";
Erwartete Ausgabe:
std::vector<long long> expected = {5, 12};
Eingabe:
long[] first = new long[] {1, 6};
long[] second = new long[] {1, 4};
long exponent = 0;
string operation = "add";
Erwartete Ausgabe:
long[] expected = new long[] {5, 12};
Erläuterung
1/6 + 1/4 = 2/12 + 3/12 = 5/12, bereits gekürzt.
Eingabe:
first = [2, 3]
second = [0, 1]
exponent = -2
operation = "power"
Erwartete Ausgabe:
expected = [9, 4]
Eingabe:
std::vector<long long> first = {2, 3};
std::vector<long long> second = {0, 1};
long long exponent = -2;
std::string operation = "power";
Erwartete Ausgabe:
std::vector<long long> expected = {9, 4};
Eingabe:
long[] first = new long[] {2, 3};
long[] second = new long[] {0, 1};
long exponent = -2;
string operation = "power";
Erwartete Ausgabe:
long[] expected = new long[] {9, 4};
Erläuterung
Ein negativer Exponent kehrt den Bruch um: (2/3)⁻² = (3/2)² = 9/4.
Referenzen
Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.