Este es un problema de tipo entrevista, encontrado en interviewbit.com.
El problema nos menciona que debemos encontrar si dada una entrada de tipo entero con signo de 32 bits, podemos representarla cómo sigue: A^B, donde A > 0, y B > 1. Como entrada al algoritmo tenemos un número positivo.
De entrada, sabemos que el número que recibimos es positivo. Los números enteros de 32 bits con signo utilizan un bit dentro de las combinaciones para representar el signo, por tanto el rango de números se reduce a solo 2^31. Eso reduce a la mitad el nivel de posibilidades donde existen la solución.
Ahora, veamos algunos ejemplos y la solución. Recordemos que debemos solo debemos mencionar si existe el número, por tanto debemos regresar tan solo verdadero o falso, en nuestro caso regresaremos solo un entero, 0 o 1.
Entrada: 9
Salida: 1
Razón: 3*3 = 9
Entrada: 49
Salida: 1
Razón: 7^2 = 49
Entrada: 729
Salida: 1
Razón: 7^3 = 7*7*7 = 729
Ahora bien, sabemos que si Z = A ^ B, eso quiere decir que si dividimos B veces a Z entre A, nos dará 1. Por ejemplo 729 = 7*7*7, y 729/7/7/7 = 1. Tomemos eso en cuenta. Usaremos el lenguaje Go para la solución de este problema.
Definamos una función isPower que recibe un entero.
| IsPower es el método que implementa la solución a nuestro problema. |
Ahora bien, podemos obviar la solución más simple, cuando la entrada es 1. Por consecuencia, la respuesta es 1.
![]() |
| Obviamos el caso más simple. |
Ahora bien, dado un número, la potencia más grande (o la primera) a la que se puede elevar A antes de sobrepasar el limite es el cuadrado.
Iteraremos uno a uno sobre los exponentes antes del limite, de tal manera que encontremos la solución.
![]() |
| Iteramos para encontrar si el número es solución. |
Finalmente, la solución completa que tenemos es:
![]() |
| Solución final. |
Si te queda alguna duda o tienes alguna solución parecida, no dudes en comentarla.


