Вопрос задан 18.06.2023 в 14:58. Предмет Информатика. Спрашивает Котова Света.

Задача 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. У кондуктора останется три рублёвые монеты, их не хватит на сдачу.
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Мурина Юля.

Ответ:

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
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Давайте рассмотрим задачу более подробно. У нас есть кондуктор, который хочет выдать сдачу каждому пассажиру в размере 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.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос