Votre tâche consiste à calculer lentement l'exponentiation, en procédant comme suit:
Étant donné deux entrées (dans cet exemple, 4 et 8), vous devez calculer l'exponentiation en calculant l'équation bit par bit. Vous feriez 4^8
, avoir une plus grande valeur de base (4) et un exposant plus petit (8). Vous pouvez le faire en utilisant plus d'exponentiation et de division. Vous pouvez diviser l'exposant par une valeur X (à condition que X soit le premier diviseur de l'exposant) et faire de la valeur de base ( B ) B^X
. Par exemple, vous pouvez faire:
4^8 = (4 ^ 2)^(8 / 2) = 16^4
J'ai remplacé X par 2 dans l'équation précédente.
Vous pouvez «simplifier» 16^4
davantage, encore une fois avec X = 2
:
16^4 = (16 ^ 2)^(4 / 2) = 256^2
Et puis finalement calculer un nombre (encore une fois X = 2
):
256^2 = (256 ^ 2)^(2 / 2) = 65536^1 = 65536
Donc,
4^8 = 16^4 = 256^2 = 65536
C'est la sortie que vous devez donner. Le séparateur de sortie est un peu flexible, par exemple, vous pouvez séparer les équations par des sauts de ligne ou des espaces au lieu de =
. Ou, vous pouvez les mettre dans une liste (mais vous ne devez pas utiliser un chiffre ou le ^
caractère comme séparateur).
Comme l'a souligné Martin Ender, le ^
est également flexible. Par exemple, vous pouvez utiliser [A, B]
ou A**B
au lieu de A^B
dans la sortie.
X ne peut être que premier, ce qui signifie que vous ne pouvez pas utiliser X = 8
pour accéder directement à la solution, et les valeurs de X ne seront que des facteurs premiers de la deuxième entrée (l'exposant).
Exemples:
(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)
Gardez à l'esprit que le format d'entrée est également flexible (par exemple, vous pouvez prendre A \n B
ou à la A B
place de A^B
. Évidemment, ce ne serait pas un problème si vous écrivez une fonction en prenant deux arguments.
Dans le deuxième exemple, nous allons directement au calcul, car 11
est premier et nous ne pouvons plus faire de pas.
Vous pouvez écrire un programme ou une fonction pour résoudre ce problème, et vous pouvez imprimer ou renvoyer la valeur, respectivement.
Comme il s'agit de code-golf , le code le plus court gagne!
x^1
?
32^3
et8^15
ne sont pas 512 non plus.