Есть две копировальных машины, одна делает копию документа за x минут, а вторая — за y минут. Требуется получить n копий некоторого документа. За какое минимальное время это возможно сделать? Изначально документ существует в одном экземпляре. Формат ввода В единственной строке даны три числа, разделенные пробелом: N, x, y (1 ≤ x, y ≤ 10, 1 ≤ N ≤ 2*108). Формат вывода Выведите одно число — минимальное время, за которое можно получить n копий документа (в минутах).

14 Июл 2019 в 19:44
331 +1
0
Ответы
1

Для решения этой задачи можно воспользоваться следующим алгоритмом:

Найти минимальное время, за которое можно сделать одну копию документа с помощью первой или второй копировальной машины.

Рассмотреть все возможные комбинации использования обеих копировальных машин для получения n копий документа.

Выбрать комбинацию, которая займет минимальное время.

Например, если x = 3 минуты, y = 5 минут, и нам нужно получить 6 копий документа, то минимальное время будет 9 минут (3 минуты на первой машине и 6 минут на второй).

Реализация данного алгоритма будет иметь сложность O(1), так как нам нужно лишь выполнить небольшое количество операций.

Пример кода на Python:

N, x, y = map(int, input().split())
time1 = min(x, y)
time2 = max(x, y)
if N == 1:
print(time1)
else:
min_time = min(N * time1, (N // 2) * time2 + (N % 2) * time1)
print(min_time)

Пример работы программы:

Ввод:
6 3 5
Вывод:
9
20 Апр 2024 в 23:18
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир