Dados dos números enteros N y K. La tarea es encontrar la potencia de K más cercana para el número entero N. Si hay dos potencias más cercanas, considere la más grande.
Ejemplos:
Entrada: N = 5, K = 3
Salida: 3
Explicación: Las potencias de 3 son 3, 9, 27, . . . Entre estos 3 es el más cercano a 5 ya que tiene una distancia de 2.Entrada: N = 32, K = 7
Salida: 49
Explicación: Las potencias de 7 son 7, 49, 343, . . . 49 es el más cercano a 32 entre estos números.Entrada: N = 6, K = 3
Salida: 9
Explicación: Tanto 3 como 9 tienen distancia = 3. Pero 9 es mayor entre 3 y 9.
Enfoque: siga los pasos a continuación para resolver este problema:
- Para el número N , encuentre las potencias más cercanas de K mayores y menores.
- La potencia más pequeña de K será el valor mínimo (por ejemplo, X) de log K N . Entonces el valor será pow(K, X) . [valor mínimo de P = entero más cercano a P que es ≤ P]
- Y una mayor potencia de K será el valor máximo (digamos Y) de log K N . Entonces el valor será pow(K, Y) . [valor máximo de P = entero más cercano a P que es ≥ P]
- Calcule la diferencia de estos dos valores de N e imprima el más cercano como se especifica en el enunciado del problema.
A continuación se muestra la implementación del enfoque anterior.
C++
// C++ program to // implement the above approach #include <bits/stdc++.h> using namespace std; // Function to find nearest power int nearestPowerOfK(int N, int K) { // Finding log of the element int lg = log(N) / log(K); // Calculating the two possible // nearest values int a = pow(K, lg); int b = pow(K, lg + 1); // Finding the closest one if ((N - a) < (b - N)) return a; return b; } // Driver Code int main() { int N = 32, K = 7; cout << nearestPowerOfK(N, K); return 0; }
Java
// Java implementation for the above approach import java.util.*; public class GFG { // Function to find nearest power static int nearestPowerOfK(int N, int K) { // Finding log of the element int lg = (int)(Math.log(N) / Math.log(K)); // Calculating the two possible // nearest values int a = (int)Math.pow(K, lg); int b = (int)Math.pow(K, lg + 1); // Finding the closest one if ((N - a) < (b - N)) return a; return b; } // Driver Code public static void main(String args[]) { int N = 32, K = 7; System.out.println(nearestPowerOfK(N, K)); } } // This code is contributed by Samim Hossain Mondal.
Python3
# Python3 program to implement the above approach import math # Function to find nearest power def nearestPowerOfK(N, K): # Finding log of the element lg = math.log(N) // math.log(K) # Calculating the two possible # nearest values a = int(pow(K, lg)) b = int(pow(K, lg + 1)) # Finding the closest one if ((N - a) < (b - N)): return a return b # Driver Code if __name__ == "__main__": N = 32 K = 7 print(nearestPowerOfK(N, K)) # This code is contributed by rakeshsahni
C#
// C# implementation for the above approach using System; class GFG { // Function to find nearest power static int nearestPowerOfK(int N, int K) { // Finding log of the element int lg = (int)(Math.Log(N) / Math.Log(K)); // Calculating the two possible // nearest values int a = (int)Math.Pow(K, lg); int b = (int)Math.Pow(K, lg + 1); // Finding the closest one if ((N - a) < (b - N)) return a; return b; } // Driver Code public static void Main() { int N = 32, K = 7; Console.Write(nearestPowerOfK(N, K)); } } // This code is contributed by Samim Hossain Mondal.
Javascript
<script> // JavaScript program to implement // the above approach // Function to find nearest power function nearestPowerOfK(N, K) { // Finding log of the element let lg = Math.floor(Math.log(N) / Math.log(K)); // Calculating the two possible // nearest values let a = Math.pow(K, lg); let b = Math.pow(K, lg + 1); // Finding the closest one if ((N - a) < (b - N)) return a; return b; } // Driver Code let N = 32, K = 7; document.write(nearestPowerOfK(N, K)); // This code is contributed by Potta Lokesh </script>
49
Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por sushmitamittal1329 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA