Вы собираетесь
поджарить несколько тостов для предстоящей вечеринки. У вас есть сковорода, на
которой одновременно можно жарить не более k тостов.
Поджаривание одной стороны тоста занимает 2 минуты.
Предположим, что
размещение тоста на сковороде, его переворачивание и снятие происходят
мгновенно.
Напишите
программу, которая определяет минимальное количество минут, необходимое для
поджаривания n тостов. Каждый тост должен быть поджарен с
обеих сторон. Тосты нельзя снимать со сковороды раньше или
позже 2 минут, нужных для прожарки одной стороны.
Вход. Два целых
числа n и k (0 ≤ n ≤ 1000, 1 ≤ k
≤ 50) – количество тостов и вместимость сковороды (в тостах).
Выход. Выведите
минимальное время в минутах, необходимое для поджаривания всех n тостов.
Пример
входа |
Пример
выхода |
3 2 |
6 |
элементарная
задача
Анализ алгоритма
Если n = 0, то ответ 0.
Если количество тостов n не превышает вместимость сковороды k (n ≤ k),
то на поджаривание всех тостов с двух сторон потребуется 4 минуты.
Так как каждый тост нужно поджарить с обеих сторон, всего
требуется прожарок. Каждая
прожарка (одновременное расположение на сковороде до k тостов) занимает
2 минуты.
Следовательно, если n > k,
то минимальное время, необходимое для поджаривания всех тостов, равно 2 * минут.
Пример
Пусть имеется n = 3 тоста, и сковорода вмещает одновременно k = 2 тоста. Обозначим
стороны тостов как 1a, 1b, 2a, 2b,
3a, 3b.
Тогда все 6 сторон можно
поджарить за 6 минут следующим образом:
·
Первая прожарка: 1a и 2a – 2 минуты;
·
Вторая прожарка: 1b и 3a – 2 минуты;
·
Третья прожарка: 2b и 3b – 2 минуты;
Итого: 3 прожарки по 2 минуты, то
есть 6 минут.
Реализация алгоритма
Читаем входные
данные.
scanf("%d %d",&n,&k);
Если n = 0, то ответ 0.
if (!n) res = 0; else
Если количество тостов не превышает вместимость сковороды, то на их
поджаривание потребуется 4 минуты.
if (n <= k) res = 4; else
{
Каждый тост необходимо поджарить с двух сторон, то есть всего нужно
прожарить сторон. При этом одна прожарка
(независимо от количества тостов на сковороде, не превышающего её вместимость)
занимает 2 минуты.
res = 2 * n / k;
if (2 * n %
k) res++;
res *= 2;
}
Выводим ответ.
printf("%d\n",res);
Java реализация
import java.util.*;
public class Main
{
public static void main(String []args)
{
Scanner con = new
Scanner(System.in);
int n = con.nextInt();
int k = con.nextInt();
int res;
if (n == 0) res = 0; else
if (n <= k) res = 4; else
{
res = 2 * n / k;
if (2 * n % k > 0) res++;
res *= 2;
}
System.out.println(res);
con.close();
}
}