Есть две копировальных машины, одна делает копию документа за x минут, а вторая — за y минут. Требуется получить n копий некоторого документа. За какое минимальное время это возможно сделать? Изначально документ существует в одном экземпляре. Формат ввода В единственной строке даны три числа, разделенные пробелом: N, x, y (1 ≤ x, y ≤ 10, 1 ≤ N ≤ 2*108).
Для решения этой задачи нам нужно определить, какую из копировальных машин лучше использовать для достижения минимального времени. Для этого мы будем считать, что сначала будем пользоваться машиной, которая справляется быстрее.
Для каждой сделанной копии документа, мы либо уменьшаем количество копий n на 1, если это была первая машина, либо на 2, если это была вторая. После каждого копирования мы должны выбирать наиболее быструю машину для следующего копирования.
Следовательно, если x <= y, то мы сначала будем использовать первую машину, пока не останется n-1 копий, затем будем использовать вторую машину для оставшихся n-1 копий. И наоборот, если y < x.
Реализуем эту логику в коде на Python:
n, x, y = map(int, input().split()) if x > y: x, y = y, x low = 0 high = n * x result = 0 while low <= high: mid = (low + high) // 2 count = mid // x + mid // y if count >= n: result = mid high = mid - 1 else: low = mid + 1 print(result)
Этот код сначала определяет, какая из машин быстрее, затем использует бинарный поиск для нахождения минимального времени, за которое можно получить все копии документа.
Пример ввода:
5 2 3
Пример вывода:
8
Для решения этой задачи нам нужно определить, какую из копировальных машин лучше использовать для достижения минимального времени. Для этого мы будем считать, что сначала будем пользоваться машиной, которая справляется быстрее.
Для каждой сделанной копии документа, мы либо уменьшаем количество копий n на 1, если это была первая машина, либо на 2, если это была вторая. После каждого копирования мы должны выбирать наиболее быструю машину для следующего копирования.
Следовательно, если x <= y, то мы сначала будем использовать первую машину, пока не останется n-1 копий, затем будем использовать вторую машину для оставшихся n-1 копий. И наоборот, если y < x.
Реализуем эту логику в коде на Python:
n, x, y = map(int, input().split())if x > y:
x, y = y, x
low = 0
high = n * x
result = 0
while low <= high:
mid = (low + high) // 2
count = mid // x + mid // y
if count >= n:
result = mid
high = mid - 1
else:
low = mid + 1
print(result)
Этот код сначала определяет, какая из машин быстрее, затем использует бинарный поиск для нахождения минимального времени, за которое можно получить все копии документа.