Ваше завдання - повільно обчислити експоненцію, виконавши наступні кроки:
З огляду на два входи (у цьому прикладі 4 та 8), ви повинні обчислити експоненцію, обчисливши рівняння по бітах. Ви б зробили 4^8
базову величину (4) та менший показник (8). Це можна зробити за допомогою більшої експоненції та поділу. Ви можете розділити показник на значення X (за умови, що X є простим дільником експонента) і внести базове значення ( B ) на B^X
. Наприклад, ви можете:
4^8 = (4 ^ 2)^(8 / 2) = 16^4
Я замінив X на 2 у попередньому рівнянні.
Ви можете "спростити" 16^4
далі, знову за допомогою X = 2
:
16^4 = (16 ^ 2)^(4 / 2) = 256^2
А потім нарешті обчисліть число (знову ж таки X = 2
):
256^2 = (256 ^ 2)^(2 / 2) = 65536^1 = 65536
Тому
4^8 = 16^4 = 256^2 = 65536
Це вихід, який ви повинні дати. Розділювач виходів є трохи гнучким, наприклад, ви можете розділити рівняння на нові рядки або пробіли замість =
. Або ви можете помістити їх у список (але ви не повинні використовувати цифру чи ^
символ як роздільник).
Як зазначив Мартін Ендер, ^
це також гнучко. Наприклад, ви можете використовувати [A, B]
або A**B
замість цього A^B
у висновку.
X може бути простим, а це означає, що ви не можете використовувати X = 8
прямо для рішення, а значення X будуть лише простими чинниками другого вводу (показника).
Приклади:
(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)
Майте на увазі, що формат введення також є гнучким (наприклад, ви можете взяти A \n B
або A B
замість нього A^B
. Очевидно, це не буде проблемою, якщо ви пишете функцію, яка бере два аргументи.
У другому прикладі ми переходимо безпосередньо до розрахунку, оскільки 11
це просто, і ми не можемо більше робити кроків.
Ви можете написати програму або функцію для вирішення цього питання, а також можете надрукувати або повернути значення відповідно.
Оскільки це код-гольф , виграє найкоротший код!
x^1
?
32^3
і8^15
не є 512.