Ihre Aufgabe ist es, die Exponentiation mit den folgenden Schritten langsam zu berechnen:
Bei zwei Eingaben (in diesem Beispiel 4 und 8) müssen Sie die Exponentiation berechnen, indem Sie die Gleichung Stück für Stück berechnen. Sie hätten 4^8
einen größeren Basiswert (4) und einen kleineren Exponenten (8). Sie können dies mit mehr Potenzierung und Division tun. Sie können den Exponenten durch einen Wert X teilen (vorausgesetzt, X ist ein Primteiler des Exponenten) und den Basiswert ( B ) in machen B^X
. Zum Beispiel können Sie Folgendes tun:
4^8 = (4 ^ 2)^(8 / 2) = 16^4
Ich habe X in der vorherigen Gleichung durch 2 ersetzt .
Sie können 16^4
noch einmal weiter vereinfachen X = 2
:
16^4 = (16 ^ 2)^(4 / 2) = 256^2
Und dann endlich (wieder X = 2
) eine Zahl berechnen :
256^2 = (256 ^ 2)^(2 / 2) = 65536^1 = 65536
Deshalb,
4^8 = 16^4 = 256^2 = 65536
Dies ist die Ausgabe, die Sie geben sollten. Das Ausgabetrennzeichen ist etwas flexibel. Sie können beispielsweise die Gleichungen durch Zeilenumbrüche oder Leerzeichen anstelle von trennen =
. Sie können sie auch in eine Liste einfügen (Sie dürfen jedoch keine Ziffer oder das ^
Zeichen als Trennzeichen verwenden).
Wie Martin Ender betonte, ^
ist das auch flexibel. Beispielsweise können Sie [A, B]
oder A**B
anstelle von A^B
in der Ausgabe verwenden.
X kann nur eine Primzahl sein, was bedeutet, dass Sie nicht X = 8
direkt zur Lösung gelangen können, und die Werte von X sind nur Primfaktoren der zweiten Eingabe (des Exponenten).
Beispiele:
(input) -> (output)
4^8 -> 4^8=16^4=256^2=65536
5^11 -> 5^11=48828125
2^15 -> 2^15=32^3=32768 (2^15=8^5=32768 is also a valid output)
Beachten Sie, dass das Eingabeformat auch flexibel ist (z. B. können Sie A \n B
oder A B
anstelle von verwenden A^B
. Dies wäre natürlich kein Problem, wenn Sie eine Funktion mit zwei Argumenten schreiben.
Im zweiten Beispiel gehen wir direkt zur Berechnung über, da 11
es sich um eine Primzahl handelt und wir keine weiteren Schritte ausführen können.
Sie können ein Programm oder eine Funktion schreiben, um dies zu lösen, und Sie können den Wert drucken bzw. zurückgeben.
Da dies Code-Golf ist, gewinnt dieser kürzeste Code!
32^3
und8^15
sind auch nicht 512.x^1
?Antworten:
Gelee , 16 Bytes
Probieren Sie es online aus!
Die Eingabe ist eine einzelne Liste
[base, exponent]
. Der Rückgabewert des unteren monadischen Links ist eine Liste von Listen. Als vollständiges Programm wird eine Darstellung dieser Liste gedruckt, beispielsweise wie2^15=8^5=32768^1
folgt:Wie?
Es könnte durch ein Trailing als Raster für 2 Bytes formatiert werden
µG
, z.... oder vollständig formatiert, einschließlich Abschneiden der
^1
, für 9, mit einem nachgestelltenj€”^j”=ṖṖ
, z.quelle
JavaScript (ES7), 55 Byte
Verwendet
,
anstelle von=
(2^15,8^5,32768
).Testfälle
Code-Snippet anzeigen
Hinweis: Das Snippet wird
Math.pow
anstelle der**
Cross-Browser-Kompatibilität verwendet.quelle
05AB1E ,
232217 BytesSparte 5 Bytes, indem Sie das flexible Ausgabeformat bemerkten.
Probieren Sie es online aus!
Erläuterung
Beispiel für
2^15
quelle
C,
125123 + 4 (-lm
) =129127 BytesNimmt ein Doppel und eine ganze Zahl.
Probieren Sie es online aus!
quelle
Haskell, 64 Bytes
Anwendungsbeispiel:
2 # 32
->[[2,32],[4,16],[16,8],[256,4],[65536,2],[4294967296]]
. Probieren Sie es online aus! .Wie es funktioniert:
quelle
Bash + GNU-Dienstprogramme, 82
Rekursives Shell-Skript. Dies scheint in TIO nicht zu funktionieren, läuft aber einwandfrei, wenn es als Skript gespeichert und ausgeführt wird:
quelle