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.
- Inicialmente, N es mayor que el requerido, por lo tanto, devuelve 0 .
- 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