Minimum number of power terms with sum equal to n
Last Updated :
12 Sep, 2023
Given two positive integer n and x. The task is to express n as sum of powers of x (xa1 + xa2 +.....+ xa3) such that the number of powers of x (xa1, xa2, ....., xa3) should be minimum. Print the minimum number of power of x used to make sum equal to n.
Examples:
Input : n = 5, x = 3
Output : 3
5 = 30 + 30 + 31.
We use only 3 power terms of x { 30, 30, 31}
Input : n = 13, x = 4
Output : 4
13 = 40 + 41 + 41 + 41.
We use only four power terms of x.
Input : n = 6, x = 1
Output : 6
If x = 1, then answer will be n only (n = 1 + 1 +.... n times).
The idea is to use Horner's method. Any number n can be expressed as, n = x * a + b where 0 <= b <= x-1. Now since b is between 0 to x - 1, then b should be expressed as sum of x0 b times.
Further a can be decomposed in similar manner and so on.
Algorithm to solve this problem:
1. Initialize a variable ans to 0.
2. While n > 0
a) ans = ans + n % x
b) n = n/x
3. Return ans.
Below is the implementation of above idea :
C++
// C++ program to calculate minimum number
// of powers of x to make sum equal to n.
#include <bits/stdc++.h>
using namespace std;
// Return minimum power terms of x required
int minPower(int n, int x)
{
// if x is 1, return n since any power
// of 1 is 1 only.
if (x==1)
return n;
// Consider n = a * x + b where a = n/x
// and b = n % x.
int ans = 0;
while (n > 0)
{
// Update count of powers for 1's added
ans += (n%x);
// Repeat the process for reduced n
n /= x;
}
return ans;
}
// Driven Program
int main()
{
int n = 5, x = 3;
cout << minPower(n, x) << endl;
return 0;
}
Java
// Java program to calculate
// minimum numberof powers of
// x to make sum equal to n.
class GFG
{
// Return minimum power
// terms of x required
static int minPower(int n, int x)
{
// if x is 1, return n since
// any power of 1 is 1 only.
if (x==1)
return n;
// Consider n = a * x + b where
// a = n/x and b = n % x.
int ans = 0;
while (n > 0)
{
// Update count of powers
// for 1's added
ans += (n % x);
// Repeat the process for reduced n
n /= x;
}
return ans;
}
// Driver code
public static void main (String[] args)
{
int n = 5, x = 3;
System.out.println(minPower(n, x));
}
}
// This code is contributed by Anant Agarwal.
Python3
# Python program to
# calculate minimum number
# of powers of x to make
# sum equal to n.
# Return minimum power
# terms of x required
def minPower(n,x):
# if x is 1, return
# n since any power
# of 1 is 1 only.
if (x==1):
return n
# Consider n = a * x + b where a = n/x
# and b = n % x.
ans = 0
while (n > 0):
# Update count of powers for 1's added
ans += (n%x)
# Repeat the process for reduced n
n //= x
return ans
# Driver code
n = 5
x = 3
print(minPower(n, x))
# This code is contributed
# by Anant Agarwal.
C#
// C# program to calculate
// minimum numberof powers
// of x to make sum equal
// to n.
using System;
class GFG
{
// Return minimum power
// terms of x required
static int minPower(int n, int x)
{
// if x is 1, return n since
// any power of 1 is 1 only.
if (x == 1)
return n;
// Consider n = a * x + b where
// a = n / x and b = n % x.
int ans = 0;
while (n > 0)
{
// Update count of
// powers for 1's
// added
ans += (n % x);
// Repeat the process
// for reduced n
n /= x;
}
return ans;
}
// Driver code
public static void Main ()
{
int n = 5, x = 3;
Console.WriteLine(minPower(n, x));
}
}
// This code is contributed by vt_m.
PHP
<?php
// PHP program to calculate minimum number
// of powers of x to make sum equal to n.
// Return minimum power
// terms of x required
function minPower($n, $x)
{
// if x is 1, return n since
// any power of 1 is 1 only.
if ($x == 1)
return $n;
// Consider n = a * x + b
// where a = n/x and b = n % x.
$ans = 0;
while ($n > 0)
{
// Update count of powers
// for 1's added
$ans += ($n % $x);
// Repeat the process
// for reduced n
$n /= $x;
}
return $ans;
}
// Driver Code
$n = 5; $x = 3;
echo(minPower($n, $x));
// This code is contributed by Ajit.
?>
JavaScript
<script>
// JavaScript program to calculate minimum number
// of powers of x to make sum equal to n.
// Return minimum power terms of x required
function minPower(n, x)
{
// if x is 1, return n since any power
// of 1 is 1 only.
if (x==1)
return n;
// Consider n = a * x + b where a = n/x
// and b = n % x.
let ans = 0;
while (n > 0)
{
// Update count of powers for 1's added
ans += (n%x);
// Repeat the process for reduced n
n = Math.floor(n / x);
}
return ans;
}
// Driven Program
let n = 5, x = 3;
document.write(minPower(n, x) + "<br>");
// This code is contributed by Surbhi Tyagi.
</script>
Output:
3
Time complexity: O(logxn)
Auxiliary space:O(1)
Similar Reads
Minimum numbers (smaller than or equal to N) with sum S Given N numbers(1, 2, 3, ....N) and a number S. The task is to print the minimum number of numbers that sum up to give S. Examples: Input: N = 5, S = 11 Output: 3 Three numbers (smaller than or equal to N) can be any of the given combinations. (3, 4, 4) (2, 4, 5) (1, 5, 5) (3, 3, 5)Input: N = 1, S =
3 min read
Minimum Fibonacci terms with sum equal to K Given a number k, the task is to find the minimum number of Fibonacci terms (including repetitions) whose sum equals k. Note: You may use any Fibonacci number multiple times.Examples:Input: k = 7Output: 2Explanation: Possible ways to sum up to 7 using Fibonacci numbers:5 + 2 = 7 (2 terms)3 + 3 + 1 =
5 min read
Minimum number of Factorials whose sum is equal to N Given a number N (<1010), the task is to find the minimum number of factorials needed to represent N, as their sum. Also, print those factorials.Examples: Input: N = 30 Output: 2 24, 6 Explanation: Factorials needed to represent 30: 24, 6 Input: N = 150 Output: 3 120, 24, 6 Explanation: Factorial
7 min read
Minimum number of squares whose sum equals to given number N | set 2 A number can always be represented as a sum of squares of other numbers. Note that 1 is a square, and we can always break a number as (1*1 + 1*1 + 1*1 + â¦). Given a number N, the task is to represent N as the sum of minimum square numbers. Examples: Input : 10 Output : 1 + 9 These are all possible w
8 min read
Find the sum of numbers from 1 to n excluding those which are powers of K Given two integer N and K, the task is to find the sum of all the numbers from the range [1, N] excluding those which are powers of K. Examples: Input: N = 10, K = 3 Output: 42 2 + 4 + 5 + 6 + 7 + 8 + 10 = 42 1, 3 and 9 are excluded as they are powers of 3.Input: N = 200, K = 30 Output: 20069 Recomm
10 min read