9052. Выстрел по
мишени
Агент Джонни Инглиш решил
попрактиковаться в стрельбе. Для этого он решил сделать ровно n выстрелов. Его пистолет имеет магазин на m патронов, который, разумеется, изначально не
заряжен.
Джонни Инглиш может полностью
перезарядить свой пистолет за a секунд, или доложить в магазин один
патрон за b секунд. Один выстрел занимает ровно одну секунду. Помогите
ему посчитать, за какое минимальное время Агент Джонни Инглиш сможет совершить
ровно n выстрелов. Разумеется, он не может выстрелить из
пустого пистолета и не может положить новый патрон в уже полный магазин.
Вход. В первой строке находятся четыре
целых числа n, m, a и b (1 ≤ n, m,
a, b ≤ 104) – число выстрелов, которое
необходимо сделать, размер магазина пистолета, время полной перезарядки
магазина и время зарядки одного патрона.
Выход. Выведите одно число –
минимальное время, которое понадобится агенту, чтобы совершить ровно n выстрелов.
Пример
входа |
Пример
выхода |
3 2 1 1 |
5 |
математика
Магазин пистолета содержит на m
патронов. Доложить в магазин один патрон можно за b секунд. Если m * b < a, то положим a = m * b. Теперь a содержит минимальное время перезарядки всего
пистолета.
Для совершения n выстрелов
при размере магазина в m патронов, придется:
·
n / m
раз полностью перезарядить магазин, что можно совершить за (n / m)
* a секунд;
·
для выполнения оставшихся n % m выстрелов
можно или один раз перезарядить магазин за a секунд, или положить в магазин патронов за (n % m) * b секунд. Совершаем ту операцию,
которая требует меньшего времени. На нее уйдет min(a, (n % m) * b) секунд.
·
совершить n выстрелов можно за n секунд;
Итого общее время тренировки
составит
(n / m) * a + min(a,
(n % m) * b) + n
секунд.
Пример
Пример содержит следующие входные
данные: n = 3, m = 2, a = 1, b = 1.
Минимальное
время перезарядки всего пистолета составит
a = min(a, m * b) = min(1, 2 * 1) = 1
Минимальное
время совершения n выстрелов равно
(n / m)
* a + min(a, (n % m) * b) + n =
(3 / 2) * 1 + min(1,
(3 % 2) * 1) + 3 =
1 + 1 + 3 = 5
Читаем
входные данные.
scanf("%lld %lld %lld %lld", &n, &m, &a, &b);
Вычисляем
минимальное время a полной перезарядки пистолета.
a = min(a, m * b);
Вычисляем
минимальное время совершения n выстрелов.
res = (n / m) * a +
min(a, (n % m) * b) + n;
Выводим
ответ.
printf("%lld\n", res);