# Find the power of K nearest to N

Given two integers **N** & **K.** The task is to find the nearest power of K for the integer N. If there are two nearest powers, consider the larger one.

**Examples:**

Input:N = 5, K = 3Output:3Explanation:The powers of 3 are 3, 9, 27, . . . Among these 3 is the nearest to 5 as it has a distance of 2.

Input:N = 32, K = 7Output:49Explanation:The powers of 7 are 7, 49, 343, . . . 49 is the closest to 32 among these numbers.

Input:N = 6, K = 3Output:9Explanation:Both 3 and 9 have distance = 3. But 9 is larger between 3 and 9.

**Approach: **Follow the below steps to solve this problem:

- For the number
**N**, find the nearest powers of K greater and smaller. - The smaller power of K will be the
**floor value**(say X) of**log**. So the value will be_{K}N**pow(K, X)**. [floor value of P = closest integer to P which is â‰¤ P] - And greater power of K will be the
**ceiling value**(say Y) of**log**. So the value will be_{K}N**pow(K, Y)**. [ceiling value of P = closest integer to P which is â‰¥ P] - Calculate the difference of these two values from
**N**and print the nearest as specified in the problem statement.

Below is the implementation of the above approach.

## 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>` |

**Output**

49

**Time Complexity: **O(1)**Auxiliary Space: **O(1)