В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
0Pandohcka0
0Pandohcka0
06.07.2020 05:33 •  Информатика

В городе Ж. ещё не очень распространены банковские карты, поэтому в автобусах обычно рассчитываются наличными. Пассажиры норовят заплатить за проезд крупными купюрами, поэтому каждому из них нужно дать ровно N рублей сдачи. Выходя на рейс, кондуктор обнаружил, что у него осталось ровно A рублёвых монет и ровно B двухрублёвых монет. Определите, какому наибольшему числу пассажиров он сможет выдать N рублей сдачи, используя эти монеты.

Входные данные
Первая строка входных данных содержит целое положительное число N — величину сдачи. Вторая строка входных данных содержит целое неотрицательное число A — количество имеющихся монет в один рубль. Третья строка содержит целое неотрицательное число B — количество монет в два рубля.

Чиcло N, а также общая сумма монет у кондуктора, не превосходят 2×109 рублей.

Выходные данные
Программа должна вывести единственное целое число — максимальное число пассажиров, которым можно выдать сдачу.

Система оценки
Решения, правильно работающие, когда входные числа не превосходят 100, будут оцениваться в

Пример
Ввод

Вывод

Пояснение

5
9
7

4

Каждому пассажиру нужно выдать 5 рублей сдачи. У кондуктора есть 9 рублёвых монет и 7 двухрублёвых монет. Он может выдать трём пассажирам сдачу в виде 5=2+2+1 и ещё одному пассажиру сдачу в виде 5=2+1+1+1. У кондуктора останется три рублёвые монеты, их не хватит на сдачу.

Показать ответ
Ответ:
savolyukm
savolyukm
20.12.2021 15:10

ответ (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)

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота