Su tarea es calcular lentamente la exponenciación, con los siguientes pasos:
Dadas dos entradas (en este ejemplo, 4 y 8), debe calcular la exponenciación calculando la ecuación bit a bit. Lo haría 4^8
, tendría un mayor valor base (4) y un exponente más pequeño (8). Puedes hacer esto usando más exponenciación y división. Puede dividir el exponente por un valor X (siempre que X sea un divisor primo del exponente) y convertir el valor base ( B ) en B^X
. Por ejemplo, puedes hacer:
4^8 = (4 ^ 2)^(8 / 2) = 16^4
He reemplazado X con 2 en la ecuación anterior.
Puede 'simplificar' 16^4
aún más, nuevamente con X = 2
:
16^4 = (16 ^ 2)^(4 / 2) = 256^2
Y luego finalmente calcular un número (de nuevo X = 2
):
256^2 = (256 ^ 2)^(2 / 2) = 65536^1 = 65536
Por lo tanto,
4^8 = 16^4 = 256^2 = 65536
Este es el resultado que debes dar. El separador de salida es un poco flexible, por ejemplo, puede separar las ecuaciones por líneas nuevas o espacios en lugar de =
. O bien, puede ponerlos en una lista (pero no debe usar un dígito o el ^
carácter como separador).
Como señaló Martin Ender, ^
también es flexible. Por ejemplo, puede usar [A, B]
o en A**B
lugar de A^B
en la salida.
X solo puede ser primo, lo que significa que no puede usar X = 8
para llegar directamente a la solución, y los valores de X solo serán factores primos de la segunda entrada (el exponente).
Ejemplos:
(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)
Tenga en cuenta que el formato de entrada también es flexible (por ejemplo, puede tomar A \n B
o A B
no A^B
. Obviamente, esto no sería un problema si escribe una función tomando dos argumentos.
En el segundo ejemplo, vamos directamente al cálculo, ya que 11
es primo y no podemos seguir más pasos.
Puede escribir un programa o una función para resolver esto, y puede imprimir o devolver el valor, respectivamente.
Como este es el código de golf , ¡el código más corto gana!
32^3
y8^15
tampoco son 512.x^1
?Respuestas:
Jalea , 16 bytes
Pruébalo en línea!
La entrada es una lista única
[base, exponent]
. El valor de retorno del enlace monádico inferior es una lista de listas, como un programa completo se imprime una representación de esa lista, por ejemplo,2^15=8^5=32768^1
se imprime como:¿Cómo?
Podría formatearse como una cuadrícula de 2 bytes mediante un seguimiento
µG
, por ejemplo:... o completamente formateado, incluido el recorte de
^1
, para 9, con un finalj€”^j”=ṖṖ
, por ejemplo:fuente
JavaScript (ES7), 55 bytes
Usos
,
en lugar de=
(2^15,8^5,32768
).Casos de prueba
Mostrar fragmento de código
Nota: el fragmento utiliza en
Math.pow
lugar de la**
compatibilidad entre navegadores.fuente
05AB1E ,
232217 bytesGuardado 5 bytes al notar el formato de salida flexible.
Pruébalo en línea!
Explicación
Ejemplo para
2^15
fuente
C,
125123 + 4 (-lm
) =129127 bytesToma un doble y un entero.
Pruébalo en línea!
fuente
Haskell, 64 bytes
Ejemplo de uso:
2 # 32
->[[2,32],[4,16],[16,8],[256,4],[65536,2],[4294967296]]
. Pruébalo en línea! .Cómo funciona:
fuente
Bash + GNU utilidades, 82
Script de shell recursivo. Esto no parece funcionar en TIO, pero funciona bien cuando se guarda como un script y se ejecuta:
fuente