Twoim zadaniem jest powoli obliczyć potęgowanie, wykonując następujące czynności:
Biorąc pod uwagę dwa dane wejściowe (w tym przykładzie 4 i 8), musisz obliczyć potęgowanie obliczając równanie bit po bicie. Zrobiłbyś to 4^8
, mając większą wartość podstawową (4) i mniejszy wykładnik (8). Możesz to zrobić, stosując większe potęgowanie i dzielenie. Możesz podzielić wykładnik wykładniczy przez wartość X (pod warunkiem, że X jest głównym dzielnikiem wykładnika wykładniczego) i zrobić wartość podstawową ( B ) B^X
. Na przykład możesz wykonać:
4^8 = (4 ^ 2)^(8 / 2) = 16^4
W poprzednim równaniu zamieniłem X na 2.
Możesz 16^4
jeszcze bardziej uprościć , ponownie X = 2
:
16^4 = (16 ^ 2)^(4 / 2) = 256^2
A następnie w końcu obliczyć liczbę (ponownie X = 2
):
256^2 = (256 ^ 2)^(2 / 2) = 65536^1 = 65536
W związku z tym,
4^8 = 16^4 = 256^2 = 65536
To wynik, który powinieneś dać. Separator wyjściowy jest trochę elastyczny, na przykład możesz rozdzielić równania nowymi liniami lub spacjami zamiast =
. Lub możesz umieścić je na liście (ale nie wolno używać cyfry lub ^
znaku jako separatora).
Jak zauważył Martin Ender, ^
jest również elastyczny. Na przykład możesz użyć [A, B]
lub A**B
zamiast A^B
w danych wyjściowych.
X może być tylko liczbą pierwszą, co oznacza, że nie można użyć, X = 8
aby przejść bezpośrednio do rozwiązania, a wartości X będą jedynie czynnikami pierwszymi drugiego wejścia (wykładnika).
Przykłady:
(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)
Pamiętaj, że format wejściowy jest również elastyczny (np. Możesz wziąć A \n B
lub A B
zamiast niego A^B
. Oczywiście nie stanowiłoby to problemu, gdybyś napisał funkcję z dwoma argumentami.
W drugim przykładzie przechodzimy od razu do obliczeń, ponieważ 11
jest to liczba pierwsza i nie możemy zrobić więcej kroków.
Możesz napisać program lub funkcję, aby rozwiązać ten problem i odpowiednio wydrukować lub zwrócić wartość.
Ponieważ jest to kod-golf , ten najkrótszy kod wygrywa!
x^1
?
32^3
i8^15
nie są też 512.