
Задача 5: Сдача В городе Ж. ещё не очень распространены банковские карты, поэтому в автобусах
обычно рассчитываются наличными. Пассажиры норовят заплатить за проезд крупными купюрами, поэтому каждому из них нужно дать ровно N рублей сдачи. Выходя на рейс, кондуктор обнаружил, что у него осталось ровно A рублёвых монет и ровно B двухрублёвых монет. Определите, какому наибольшему числу пассажиров он сможет выдать N рублей сдачи, используя эти монеты. Входные данные Первая строка входных данных содержит целое положительное число N — величину сдачи. Вторая строка входных данных содержит целое неотрицательное число A — количество имеющихся монет в один рубль. Третья строка содержит целое неотрицательное число B — количество монет в два рубля. Чиcло N, а также общая сумма монет у кондуктора, не превосходят 2×109 рублей. Выходные данные Программа должна вывести единственное целое число — максимальное число пассажиров, которым можно выдать сдачу. Система оценки Решения, правильно работающие, когда входные числа не превосходят 100, будут оцениваться в 60 баллов. Пример Ввод Вывод Пояснение 5 9 7 4 Каждому пассажиру нужно выдать 5 рублей сдачи. У кондуктора есть 9 рублёвых монет и 7 двухрублёвых монет. Он может выдать трём пассажирам сдачу в виде 5=2+2+1 и ещё одному пассажиру сдачу в виде 5=2+1+1+1. У кондуктора останется три рублёвые монеты, их не хватит на сдачу.

Ответы на вопрос

Ответ:
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 рублей. У кондуктора есть ровно A рублёвых монет и ровно B двухрублёвых монет.
Для решения задачи мы можем использовать жадный метод. Начнем с того, чтобы максимально использовать двухрублёвые монеты, так как они в два раза больше по номиналу. После этого будем использовать рублёвые монеты.
Давайте определим, сколько максимально можно использовать двухрублёвых монет. Пусть k будет минимумом из (B, N//2), где // - это оператор целочисленного деления. Таким образом, мы используем k двухрублёвых монет, что составляет 2k рублей.
Теперь у нас остается (N - 2k) рублей, которые мы должны выдать рублёвыми монетами. Поскольку у нас есть A рублёвых монет, мы можем использовать минимум из (A, N - 2k) рублёвых монет.
Итак, общее количество монет, которые мы можем использовать, будет равно 2k + минимум(A, N - 2k). Теперь мы можем выразить это в виде программы на Python:
```python def max_passengers(N, A, B): # Максимальное количество двухрублёвых монет, которое можно использовать k = min(B, N // 2) # Максимальное количество рублёвых монет, которое можно использовать max_rub_coins = min(A, N - 2 * k) # Общее количество монет, которое можно использовать total_coins = 2 * k + max_rub_coins # Максимальное количество пассажиров max_passengers = total_coins // N return max_passengers
# Ввод данных N = int(input()) A = int(input()) B = int(input())
# Вывод результата result = max_passengers(N, A, B) print(result) ```
Теперь вы можете использовать этот код, чтобы решить задачу, введя необходимые значения N, A и B.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili