Sua tarefa é calcular lentamente a exponenciação, com as seguintes etapas:
Dadas duas entradas (neste exemplo, 4 e 8), você deve calcular a exponenciação calculando a equação pouco a pouco. Você faria 4^8
, teria um valor base maior (4) e um expoente menor (8). Você pode fazer isso usando mais exponenciação e divisão. Você pode dividir o expoente por um valor X (desde que X seja um divisor principal do expoente) e transformar o valor base ( B ) em B^X
. Por exemplo, você pode fazer:
4^8 = (4 ^ 2)^(8 / 2) = 16^4
Substituí X por 2 na equação anterior.
Você pode 'simplificar' 16^4
ainda mais, novamente com X = 2
:
16^4 = (16 ^ 2)^(4 / 2) = 256^2
E, finalmente, calcule um número (novamente X = 2
):
256^2 = (256 ^ 2)^(2 / 2) = 65536^1 = 65536
Portanto,
4^8 = 16^4 = 256^2 = 65536
Esta é a saída que você deve fornecer. O separador de saída é um pouco flexível; por exemplo, é possível separar as equações por novas linhas ou espaços em vez de =
. Ou, você pode colocá-los em uma lista (mas não deve usar um dígito ou o ^
caractere como separador).
Como Martin Ender apontou, o ^
também é flexível. Por exemplo, você pode usar [A, B]
ou em A**B
vez de A^B
na saída.
X pode ser apenas primo, o que significa que você não pode usar X = 8
para ir direto à solução, e os valores de X serão apenas fatores primos da segunda entrada (o expoente).
Exemplos:
(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)
Lembre-se de que o formato de entrada também é flexível (por exemplo, você pode usar A \n B
ou A B
não A^B
. Obviamente, isso não seria um problema se você escrever uma função usando dois argumentos.
No segundo exemplo, vamos direto ao cálculo, pois 11
é primo e não podemos dar mais passos.
Você pode escrever um programa ou uma função para resolver isso e pode imprimir ou retornar o valor, respectivamente.
Como esse é o código-golfe , esse código mais curto vence!
x^1
?
32^3
e8^15
não são 512 também.