Given a positive integer N, the task is to divide it into K unique parts such that the sum of these parts is equal to the original number and the gcd of all the parts is maximum. Print the maximum gcd if such a division exists else print -1.
Input: N = 6, K = 3
Only possible division with unique
elements is (1, 2, 3) and gcd(1, 2, 3) = 1.
Input: N = 18, K = 3
Naive approach: Find all the possible divisions of N and compute the maximum gcd of them. But this approach will take exponential time and space.
Efficient approach: Let the divisions of N be A1, A2……..AK
Now, it is known that gcd(a, b) = gcd(a, b, a + b) and hence, gcd(A1, A2….AK) = gcd(A1, A2….AK, A1 + A2…. + AK)
But A1 + A2…. + AK = N and hence, the gcd of the divisions will be one of the factors of N.
Let a be the factor of N which can be the possible answer:
Since a is the gcd, all the division will be the multiples of a and hence, for K unique Bi,
a * B1 + a * B2……. + a * BK = N
a * (B1 + B2…….+ BK) = N
Since all the Bi are unique,
B1 + B2…….+ BK ≥ 1 + 2 + 3 ….. + K
B1 + B2…….+ BK ≥ K * (K + 1) / 2
Hence, all the factors of N whose complementary factor is greater than or equal to K * (K + 1) / 2 can be one of the possible answers and we have take to the maximum of all the possible answers.
Below is the implementation of the above approach:
- Divide a number into two parts such that sum of digits is maximum
- Split a string in equal parts such that all parts are palindromes
- Divide a number into two parts
- Split a number into 3 parts such that none of the parts is divisible by 3
- Divide a big number into two parts that differ by k
- Divide number into two parts divisible by given numbers
- Divide array into two parts with equal sum according to the given constraints
- Divide an isosceles triangle in two parts with ratio of areas as n:m
- Minimum cuts required to divide the Circle into equal parts
- Possible cuts of a number such that maximum parts are divisible by 3
- Break a number such that sum of maximum divisors of all parts is minimum
- Count number of ways to divide a number in 4 parts
- Find the number of ways to divide number into four parts such that a = c and b = d
- Break the number into three parts
- Partition a number into two divisible parts
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. 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.