В городе Ж еще не распространены банковские карты, поэтому в автобусах жители рассчитываются обычно наличными. Пассажиры норовят запалить за проезд крупными купюрами, поэтому каждому из них нужно дать ровно N рублей сдачи. Выходя на рейс, кондуктор обнаружил, что у него осталось ровно A рублевых монет и ровно B двухрублевых монет. Определите, какому наибольшему числу пассажиров он сможет выдать N рублей сдачи, используя эти монеты.
Входные данные
Первая строка входных данных содержит целое положительное число N – величину данных. Вторая строка входных данных содержит целое неотрицательное число А – кол-во имеющихся монет в один рубль. Третья строка содержит целое неотрицательное число В – кол-во монет в два рубля.
Выходные данные.
Программа должна вывести единственное целое число – максимальное число пассажиров, которым можно дать сдачу.
ответ (Python):
n = int(input())
a = int(input())
b = int(input())
left = 0
right = (a + 2 * b) // n + 2
while right - left > 1:
mid = (left + right) // 2
count2 = n // 2 * mid
count1 = n % 2 * mid
if a > count1:
count2 -= (a - count1) // 2
if count1 <= a and count2 <= b:
left = mid
else:
right = mid
print(left)
Объяснение:
n = int(input())
a = int(input())
b = int(input())
left = 0
right = (a + 2 * b) // n + 2
while right - left > 1:
mid = (left + right) // 2
count2 = n // 2 * mid
count1 = n % 2 * mid
if a > count1:
count2 -= (a - count1) // 2
if count1 <= a and count2 <= b:
left = mid
else:
right = mid
print(left)
Объяснение: