# Compute the maximum power with a given condition

Given 3 integers N, M and K. The task is to find maximum P such that N * KP <= M .

Examples:

Input :N = 1, K = 2, M = 5
Output :2

Input: N = 5, K = 25, M = 100
Output: 0

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach:

In this algorithm, simply multiply N with K and update the current value of N with the result and increase variable power (initially 0) by 1.
To achieve this, a recursive function is defined which has 2 base cases.

1. If the current value of N is greater than the M. This condition can have two conditions:

2. Initially, N is greater than required, therefore, return 0.
3. Otherwise, return power – 1.
• If the current value of N is equal to the M then return power.
• Recursive condition if current N < M:
Update N as (N * k) and power as current power + 1.

Below is the implementation of the above approach:

## C++

 `// Compute maximum power to which K can be raised so ` `// that given condition remains true ` `#include ` `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 `

Output:

```2
```

My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Improved By : AnkitRai01, princiraj1992

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.