В Хогвартсе проходит традиционная
ежегодная олимпиада по теории магии среди младшекурсников. Завхозу школы,
Аргусу Филчу, поручено распределить студентов по аудиториям.
Каждый факультет выставил на
олимпиаду своих лучших учеников: от Гриффиндора участвуют g студентов,
от Слизерина – s студентов, Пуффендуй
представляет h студентов, а Когтевран – r студентов.
В распоряжении Филча имеется m аудиторий.
На аудитории наложено особое
заклятие расширения, благодаря которому каждая аудитория может вместить любое
количество студентов. Однако необходимо учитывать, что ученики одного
факультета, оказавшиеся в одной аудитории, могут воспользоваться возможностью
для жульничества, обмениваясь идеями по решению задач. Поэтому количество
студентов одного факультета в одной аудитории должно быть минимально возможным.
Назовём рассадку оптимальной, если она минимизирует максимальное количество студентов одного факультета в
любой аудитории.
Определите, какое минимальное
количество студентов одного факультета Филчу всё же придётся посадить в одну
аудиторию даже при оптимальной рассадке.
Вход. Первая строка содержит четыре целых числа g, s, h и r
(1 ≤ g, s, h, r ≤ 1000) – количество учеников,
представляющих факультеты Гриффиндор, Слизерин, Пуффендуй и Когтевран
соответственно.
Во второй строке задано одно
целое число m (1 ≤ m ≤ 1000) – количество доступных аудиторий.
Выход. Выведите одно целое число
– минимальное
возможное количество студентов одного факультета в одной аудитории при
оптимальной рассадке.
Пример
входа 1 |
Пример
выхода 1 |
4 3 4 4 2 |
2 |
|
|
Пример входа 2 |
Пример выхода 2 |
15 14 13 14 5 |
3 |
условный
оператор
Анализ алгоритма
На самом крупном
факультете учится mx = max(g, s, h, r) студентов. Если попытаться
равномерно распределить их по m аудиториям, то в какой-то из них
окажется не менее студентов. Именно такое минимальное количество студентов
одного факультета придётся посадить в одну аудиторию даже при оптимальной
рассадке.
Реализация алгоритма
Читаем входные
данные.
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 = .
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)