Олімпіада у Гоґвортсі#4857

Олімпіада у Гоґвортсі (Розбір)

На найбільшому факультеті навчається mx = max(g, s, h, r) студентів. Якщо спробувати рівномірно розподілити їх по аудиторіях, то в якійсь з них виявиться не менше \left\lceil mx / m \right\rceil студентів. Саме така мінімальна кількість студентів одного факультету доведеться посадити в одну аудиторію навіть при оптимальній розсадці.

Реалізація алгоритму

Читаємо вхідні дані.

scanf("%d %d %d %d", &g, &s, &h, &r);
scanf("%d", &m);

Вираховуємо mx = max(g, s, h, r).

mx = g;
if (s > mx) mx = s;
if (h > mx) mx = h;
if (r > mx) mx = r;

Визначимо максимальну кількість студентів, яка може виявитися в одній аудиторії: res = \left\lceil mx / m \right\rceil.

res = mx / m;
if (mx % m > 0) res++;

Виводимо відповідь.

printf("%d\n", res);

Java реалізація

import java.util.*;
 
public class Main
{
  public static void main(String[] args)
  {
    Scanner con = new Scanner(System.in);
    int g = con.nextInt();
    int s = con.nextInt();   
    int h = con.nextInt();
    int r = con.nextInt();
    int m = con.nextInt();
    
    int mx = g;
    if (s > mx) mx = s;
    if (h > mx) mx = h;
    if (r > mx) mx = r;

    int res = mx / m;
    if (mx % m > 0) res++;
    System.out.println(res);
    con.close();
  }
}

Python реалізація

Читаємо вхідні дані.

a = list(map(int, input().split()))
m = int(input())

Вираховуємо і виводимо відповідь.

print((max(a) - 1) // m + 1)