Calcular la potencia máxima con una condición dada

Dados 3 enteros N , M y K. La tarea es encontrar el P máximo tal que N * K P ≤ M .
 

Ejemplos:  

Entrada: N = 1, K = 2, M = 5 
Salida: 2
Entrada: N = 5, K = 25, M = 100 
Salida: 0  

Enfoque: 
en este algoritmo, simplemente multiplique N con K y actualice el valor actual de N con el resultado y aumente la potencia variable (inicialmente 0) en 1
Para lograr esto, se define una función recursiva que tiene 2 casos base.  

  1. Inicialmente, N es mayor que el requerido, por lo tanto, devuelve 0 .
  2. De lo contrario, devuelva la energía – 1 .
  • Si el valor actual de N es igual a M, devuelva la potencia .
  • Condición recursiva si actual N < M
      Actualizar N como (N * k) y potencia como potencia actual + 1
     

A continuación se muestra la implementación del enfoque anterior: 
 

C++

// Compute maximum power to which K can be raised so
// that given condition remains true
#include <bits/stdc++.h>
using namespace std;
 
#define ll long long
 
// Function to return the largest
// power
int calculate(ll int n, ll int k,
              ll int m, ll int power)
{
 
    // If n is greater than given M
    if (n > m) {
        if (power == 0)
            return 0;
        else
            return power - 1;
    }
 
    // If n == m
    else if (n == m)
        return power;
 
    else
        // Checking for the next power
        return calculate(n * k, k, m, power + 1);
}
 
// Driver Code
int main()
{
    ll N = 1, K = 2, M = 5;
 
    cout << calculate(N, K, M, 0);
 
    return 0;
}

Java

// Java program for Compute maximum power
// to which K can be raised so that
// given condition remains true
class GFG
{
 
// Function to return the largest
// power
static int calculate(int n, int k,
                     int m, int power)
{
 
    // If n is greater than given M
    if (n > m)
    {
        if (power == 0)
            return 0;
        else
            return power - 1;
    }
 
    // If n == m
    else if (n == m)
        return power;
 
    else
        // Checking for the next power
        return calculate(n * k, k, m,
                          power + 1);
}
 
// Driver Code
public static void main (String[] args)
{
    int N = 1, K = 2, M = 5;
 
    System.out.println(calculate(N, K, M, 0));
}
}
 
// This code is contributed by AnkitRai01

Python

# Compute maximum power to
# which K can be raised so
# that given condition
# remains true
 
 
# Function to return the largest
# power
def calculate(n, k, m, power):    
     
    # If n is greater than given M                        
    if n > m:
        if power == 0:
            return 0
        else:
            return power-1
     
    # If n == m
    elif n == m:
        return power
    else:
        # Checking for the next power
        return calculate(n * k, k, m, power + 1)
 
# Driver's code    
if __name__=="__main__":
     
    N = 1
    K = 2
    M = 5
     
    print(calculate(N, K, M, 0))

C#

// C# program for Compute maximum power
// to which K can be raised so that
// given condition remains true
using System;
class GFG
{
 
// Function to return the largest
// power
static int calculate(int n, int k,
                     int m, int power)
{
 
    // If n is greater than given M
    if (n > m)
    {
        if (power == 0)
            return 0;
        else
            return power - 1;
    }
 
    // If n == m
    else if (n == m)
        return power;
 
    else
        // Checking for the next power
        return calculate(n * k, k, m,
                         power + 1);
}
 
// Driver Code
public static void Main (String[] args)
{
    int N = 1, K = 2, M = 5;
 
    Console.WriteLine(calculate(N, K, M, 0));
}
}
 
// This code is contributed by PrinciRaj1992

Javascript

<script>
// javascript program for Compute maximum power
// to which K can be raised so that
// given condition remains true    
// Function to return the largest
    // power
    function calculate(n , k , m , power) {
 
        // If n is greater than given M
        if (n > m) {
            if (power == 0)
                return 0;
            else
                return power - 1;
        }
 
        // If n == m
        else if (n == m)
            return power;
 
        else
            // Checking for the next power
            return calculate(n * k, k, m, power + 1);
    }
 
    // Driver Code
     
        var N = 1, K = 2, M = 5;
 
        document.write(calculate(N, K, M, 0));
 
// This code contributed by aashish1995
</script>
Producción: 

2

 

Publicación traducida automáticamente

Artículo escrito por Shubham_Chauhan 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 *