Encuentra la potencia de K más cercana a N

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:

  1. Para el número N , encuentre las potencias más cercanas de K mayores y menores.
  2. 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]
  3. 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]
  4. 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>
Producción

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *