给定N个巧克力和K个学生,任务是找到如何对巧克力进行划分,以使所有学生收到的最小和最大巧克力之间的差异最小。打印最小和最大巧克力分配的值。
例子:
Input: N = 7, K = 3
Output: Min = 2, Max = 3
Distribution is 2 2 3
Input: N = 100, K = 10
Output: 10 10
Distribution is 10 10 10 10 10 10 10 10 10 10
方法:仅当每个学生获得相等数量的糖果,即N%k = 0时,差异才会最小化;但如果N%K!= 0,则每个学生将首先获得(NN%k)/ k数量的糖果,然后其余N%k的糖果可以通过向N%K的学生每人分配1个糖果来分配给他们。因此,如果一个学生的N%K!= 0 ,则糖果只会比(NN%k)/ k多1个糖果。
下面是上述方法的实现:
CPP
// CPP implementation of the above approach
#include
using namespace std;
// Driver code
int main(){
int n = 7, k = 3;
if(n % k == 0)
cout<
Java
// Java implementation of the above approach
public class Improve {
// Driver code
public static void main(String args[])
{
int n = 7 ;
int k = 3 ;
if (n % k == 0)
System.out.println(n / k +" " + n / k);
else
System.out.println((n-(n % k)) / k + " "
+ (((n-(n % k))/ k) + 1) ) ;
}
// This Code is contributed by ANKITRAI1
}
Python
# Python implementation of the above approach
n, k = 7, 3
if(n % k == 0):
print(n//k, n//k)
else:
print((n-n % k)//k, (n-n % k)//k + 1)
C#
// C# implementation of the
// above approach
using System;
class GFG
{
// Driver code
public static void Main()
{
int n = 7 ;
int k = 3 ;
if (n % k == 0)
Console.WriteLine(n / k +
" " + n / k);
else
Console.WriteLine((n - (n % k)) / k +
" " + (((n - (n % k)) / k) + 1));
}
}
// This code is contributed
// by inder_verama
PHP
输出:
2 3