Given two positive integers N and K, the task is to minimize the maximum element of the array formed such that the sum of array elements is positive and divisible by K.
Examples:
Input: N = 4, K = 50
Output: 13
Explanation The generated array is {12, 13, 12, 13}. Sum of the array is 50, which is divisible by K (= 50). Maximum element present in the array is 13, which is minimum possible.Input: N = 3, K = 3
Output: 1
Approach: The given problem can be solved on the basis of the following observations:
- To minimize the maximum element of the array, the absolute difference of each pair of array elements must be at most 1 and sum of array elements must be K.
- Therefore, the value of all the N element must be at least equal to the floor value of (K/N) and the increment the remaining (K%N) elements by 1 to make the sum of array element K.
From the above observations, the minimized maximum value of the constructed array is the ceil value of (K/N).
Below is the implementation of the above approach:
// C++ program for the above approach #include <bits/stdc++.h> using namespace std;
// Function to minimize the maximum // element present in an N-length array // having sum of elements divisible by K int minimumValue( int N, int K)
{ // Return the ceil value of (K / N)
return ceil (( double )K / ( double )N);
} // Driver Code int main()
{ int N = 4, K = 50;
cout << minimumValue(N, K);
return 0;
} |
// Java program for the above approach class GFG{
// Function to minimize the maximum // element present in an N-length array // having sum of elements divisible by K static int minimumValue( int N, int K)
{ // Return the ceil value of (K / N)
return ( int )Math.ceil(( double )K / ( double )N);
} // Driver code public static void main(String[] args)
{ int N = 4 , K = 50 ;
System.out.print(minimumValue(N, K));
} } // This code is contributed by code_hunt. |
# Python3 program for the above approach import math
# Function to minimize the maximum # element present in an N-length array # having sum of elements divisible by K def minimumValue(N, K):
# Return the ceil value of (K / N)
return math.ceil(K / N)
# Driver Code N = 4
K = 50
print (minimumValue(N, K))
# This code is contributed by abhinavjain194 |
// C# program for the above approach using System;
class GFG{
// Function to minimize the maximum // element present in an N-length array // having sum of elements divisible by K static int minimumValue( int N, int K)
{ // Return the ceil value of (K / N)
return ( int )Math.Ceiling(( double )K / ( double )N);
} // Driver Code public static void Main()
{ int N = 4, K = 50;
Console.WriteLine(minimumValue(N, K));
} } // This code is contributed by ukasp |
<script> // javascript program for the above approach // Function to minimize the maximum // element present in an N-length array // having sum of elements divisible by K function minimumValue(N, K)
{ // Return the ceil value of (K / N)
return Math.ceil(K / N);
} // Driver Code let N = 4, K = 50;
document.write(minimumValue(N, K));
</script> |
13
Time Complexity: O(1)
Auxiliary Space: O(1)