Open In App

Find the minimum number to be added to N to make it a power of K

Given two positive integers N and K, the task is to find the minimum number to be added to N to make it a power of K.
Examples: 
 

Input: N = 9, K = 10 
Output:
Explanation: 
9 + 1 = 10 = 101
Input: N = 20, K = 5 
Output:
Explanation: 
20 + 5 = 25 = 52 
 

 

Approach: The idea to solve this problem is to observe that the minimum power of K which can be formed from N is the next greater power of K. So, the idea is to find the next greater power of K and find the difference between N and this number. The next greater power of K can be found by the formula, 

Kint(log(N)/log(K)) + 1

 
Therefore, the minimum number to be added can be computed by: 
 

Minimum Number = Kint(log(N)/log(K)) + 1 – N 
 

Below is the implementation of the above approach:
 




// C++ program to find the minimum number
// to be added to N to make it a power of K
 
#include <bits/stdc++.h>
#define ll long long int
using namespace std;
 
// Function to return the minimum number
// to be added to N to make it a power of K.
int minNum(int n, int k)
{
    int x = (int)(log(n) / log(k)) + 1;
 
    // Computing the difference between
    // then next greater power of K
    // and N
    int mn = pow(k, x) - n;
    return mn;
}
 
// Driver code
int main()
{
    int n = 20, k = 5;
    cout << minNum(n, k);
    return 0;
}




// Java program to find the minimum number
// to be added to N to make it a power of K
 
class GFG{
  
// Function to return the minimum number
// to be added to N to make it a power of K.
static int minNum(int n, int k)
{
    int x = (int)(Math.log(n) / Math.log(k)) + 1;
  
    // Computing the difference between
    // then next greater power of K
    // and N
    int mn = (int) (Math.pow(k, x) - n);
    return mn;
}
  
// Driver code
public static void main(String[] args)
{
    int n = 20, k = 5;
    System.out.print(minNum(n, k));
}
}
 
// This code is contributed by Amit Katiyar




# Python3 program to find the minimum number
# to be added to N to make it a power of K
import math
 
# Function to return the minimum number
# to be added to N to make it a power of K.
def minNum(n, k):
     
    x = int((math.log(n) // math.log(k))) + 1
     
    # Computing the difference between
    # then next greater power of K
    # and N
    mn = pow(k, x) - n
    return mn
     
# Driver code
if __name__=='__main__':
     
    n = 20
    k = 5
    print(minNum(n, k))
 
# This code is contributed by rutvik_56




// C# program to find the minimum number
// to be added to N to make it a power of K
using System;
class GFG{
   
// Function to return the minimum number
// to be added to N to make it a power of K.
static int minNum(int n, int k)
{
    int x = (int)(Math.Log(n) /
                  Math.Log(k)) + 1;
   
    // Computing the difference between
    // then next greater power of K
    // and N
    int mn = (int)(Math.Pow(k, x) - n);
    return mn;
}
   
// Driver code
public static void Main(string[] args)
{
    int n = 20, k = 5;
    Console.Write(minNum(n, k));
}
}
  
// This code is contributed by Ritik Bansal




<script>
 
// Javascript program to find the minimum number
// to be added to N to make it a power of K
 
// Function to return the minimum number
// to be added to N to make it a power of K.
function minNum(n, k)
{
    var x = parseInt(Math.log(n) / Math.log(k)) + 1;
 
    // Computing the difference between
    // then next greater power of K
    // and N
    var mn = Math.pow(k, x) - n;
    return mn;
}
 
// Driver code
var n = 20, k = 5;
document.write( minNum(n, k));
 
</script>

Output: 
5

 

Time Complexity: O(log n)

Auxiliary Space: O(1)


Article Tags :