📜  在K个学生中分配之后,最小和最大数量的N巧克力

📅  最后修改于: 2021-04-24 03:28:29             🧑  作者: Mango

给定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