Given an number n, the task is to broken in such a way that multiplication of its parts is maximized.
Input : n = 10 Output : 36 10 = 4 + 3 + 3 and 4 * 3 * 3 = 36 is maximum possible product. Input : n = 8 Output : 18 8 = 2 + 3 + 3 and 2 * 3 * 3 = 36 is maximum possible product.
Mathematically, we are given n and we need to maximize a1 * a2 * a3 …. * aK such that n = a1 + a2 + a3 … + aK and a1, a2, … ak > 0.
Note that we need to break given Integer in at least two parts in this problem for maximizing the product.
Now we know from maxima-minima concept that, If an integer need to break in two parts, then to maximize their product those part should be equal. Using this concept lets break n into (n/x) x’s then their product will be x(n/x), now if we take derivative of this product and make that equal to 0 for maxima, we will get to know that value of x should be e (base of the natural logarithm) for maximum product. As we know that 2 < e < 3, so we should break every Integer into 2 or 3 only for maximum product.
Next thing is 6 = 3 + 3 = 2 + 2 + 2, but 3 * 3 > 2 * 2 * 2, that is every triplet of 2 can be replaced with tuple of 3 for maximum product, so we will keep breaking the number in terms of 3 only, until number remains as 4 or 2, which we will be broken into 2*2 (2*2 > 3*1) and 2 respectively and we will get our maximum product.
In short, procedure to get maximum product is as follows – Try to break integer in power of 3 only and when integer remains small (<5) then use brute force.
The complexity of below program is O(log N), because of repeated squaring power method.
Below is the implementation of above approach:
This article is contributed by Utkarsh Trivedi. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
- A Product Array Puzzle
- Generate integer from 1 to 7 with equal probability
- Find the maximum distance covered using n bikes
- Generate all unique partitions of an integer
- Count Distinct Non-Negative Integer Pairs (x, y) that Satisfy the Inequality x*x + y*y < n
- Maximum profit by buying and selling a share at most twice
- Find a pair with maximum product in array of Integers
- Square root of an integer
- Count positive integers with 0 as a digit and maximum 'd' digits
- Querying maximum number of divisors that a number in a given range has
- Maximum profit by buying and selling a share at most k times
- Count maximum points on same line
- Largest palindrome which is product of two n-digit numbers
- Maximum sum of distinct numbers with LCM as N
- Find the maximum number of handshakes
Improved By : Mithun Kumar