Ваша задача - медленно вычислить возведение в степень, выполнив следующие шаги:
Учитывая два входа (в этом примере 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.