Este programa comprueba si un número n se puede expresar como potencia de k y, en caso afirmativo, a qué potencia se debe elevar k para convertirlo en n. El siguiente ejemplo aclarará:
Ejemplos:
Input : n = 16, k = 2 Output : yes : 4 Explanation : Answer is yes because 16 can be expressed as power of 2. Input : n = 27, k = 3 Output : yes : 3 Explanation : Answer is yes as 27 can be expressed as power of 3. Input : n = 20, k = 5 Output : No Explanation : Answer is No as 20 cannot be expressed as power of 5.
Hemos discutido dos métodos en la publicación a continuación
: Comprobar si un número es una potencia de otro número
En esta publicación, se analiza un nuevo método de cambio de base.
En el método de cambio de base, simplemente cambiamos la base del número n a k y verificamos si el primer dígito del número cambiado es 1 y todos los restantes son cero.
Ejemplo para esto : Tomemos n = 16 yk = 2.
Cambie 16 a base 2. Es decir (10000) 2 . Dado que el primer dígito es 1 y el resto son cero. Por lo tanto, 16 se puede expresar como potencia de 2. Cuenta la longitud de (10000) 2 y réstale 1, ese será el número al que se debe elevar 2 para hacer 16. En este caso, 5 – 1 = 4.
Otro ejemplo : Tomemos n = 20 y k = 3.
20 en base 3 es (202) 3 . Dado que hay dos dígitos distintos de cero, por lo tanto, 20 no se puede expresar como potencia de 3.
C++
// CPP program to check if a number can be // raised to k #include <iostream> #include <algorithm> using namespace std; bool isPowerOfK(unsigned int n, unsigned int k) { // loop to change base n to base = k bool oneSeen = false; while (n > 0) { // Find current digit in base k int digit = n % k; // If digit is neither 0 nor 1 if (digit > 1) return false; // Make sure that only one 1 // is present. if (digit == 1) { if (oneSeen) return false; oneSeen = true; } n /= k; } return true; } // Driver code int main() { int n = 64, k = 4; if (isPowerOfK(n ,k)) cout << "Yes"; else cout << "No"; }
Java
// Java program to check if a number can be // raised to k class GFG { static boolean isPowerOfK(int n,int k) { // loop to change base n to base = k boolean oneSeen = false; while (n > 0) { // Find current digit in base k int digit = n % k; // If digit is neither 0 nor 1 if (digit > 1) return false; // Make sure that only one 1 // is present. if (digit == 1) { if (oneSeen) return false; oneSeen = true; } n /= k; } return true; } // Driver code public static void main (String[] args) { int n = 64, k = 4; if (isPowerOfK(n ,k)) System.out.print("Yes"); else System.out.print("No"); } } // This code is contributed by Anant Agarwal.
Python3
# Python program to # check if a number can be # raised to k def isPowerOfK(n, k): # loop to change base # n to base = k oneSeen = False while (n > 0): # Find current digit in base k digit = n % k # If digit is neither 0 nor 1 if (digit > 1): return False # Make sure that only one 1 # is present. if (digit == 1): if (oneSeen): return False oneSeen = True n //= k return True # Driver code n = 64 k = 4 if (isPowerOfK(n , k)): print("Yes") else: print("No") # This code is contributed # by Anant Agarwal.
C#
// C# program to check if a number can be // raised to k using System; class GFG { static bool isPowerOfK(int n, int k) { // loop to change base n to base = k bool oneSeen = false; while (n > 0) { // Find current digit in base k int digit = n % k; // If digit is neither 0 nor 1 if (digit > 1) return false; // Make sure that only one 1 // is present. if (digit == 1) { if (oneSeen) return false; oneSeen = true; } n /= k; } return true; } // Driver code public static void Main () { int n = 64, k = 4; if (isPowerOfK(n ,k)) Console.WriteLine("Yes"); else Console.WriteLine("No"); } } // This code is contributed by vt_m.
PHP
<?php // PHP program to check // if a number can be // raised to k function isPowerOfK($n, $k) { // loop to change base // n to base = k $oneSeen = false; while ($n > 0) { // Find current // digit in base k $digit = $n % $k; // If digit is // neither 0 nor 1 if ($digit > 1) return false; // Make sure that // only one 1 // is present. if ($digit == 1) { if ($oneSeen) return false; $oneSeen = true; } $n = (int)$n / $k; } return true; } // Driver code $n = 64; $k = 4; if (isPowerOfK($n, $k)) echo "Yes"; else echo "No"; // This code is contributed // by ajit ?>
Javascript
<script> // JavaScript program to check if a number can be // raised to k function isPowerOfK(n,k) { // loop to change base n to base = k let oneSeen = false; while (n > 0) { // Find current digit in base k let digit = n % k; // If digit is neither 0 nor 1 if (digit > 1) return false; // Make sure that only one 1 // is present. if (digit == 1) { if (oneSeen) return false; oneSeen = true; } n = Math.floor(n / k); } return true; } // Driver Code let n = 64, k = 4; if (isPowerOfK(n ,k)) document.write("Yes"); else document.write("No"); </script>
Producción:
Yes
Este artículo es una contribución de Shubham Rana . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA