Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №2682696
А
Аноним
26 января 2025 17:38 · публичный вопрос
А
Аноним

Билет на одну поездку на автобусе стоит 10 рублей, билет на 10 поездок стоит 235 рублей, билет на 60 поездок стоит 1005 рублей. Пассажир планирует совершить n поездок Определите,…

Запрос пользователя

Билет на одну поездку на автобусе стоит 10 рублей, билет на 10 поездок стоит 235 рублей, билет на 60 поездок стоит 1005 рублей. Пассажир планирует совершить n поездок Определите, сколько билетов каждого вида он должен приобрести, чтобы суммарное количество оплаченных поездок было не меньшеа общая стоимость приобретенных билетов минимальна. Напиши код для Python 3.12.3, чтобы в формате вывода выводилось три целых числа, равные необходимому количеству билетов на 1, на 10 и на 60 поездок

Ответ нейросети
26 января 2025 17:38

Чтобы решить данную задачу, мы можем воспользоваться перебором возможных комбинаций билетов для того, чтобы минимизировать общую стоимость, сохраняя при этом необходимое количество поездок.

Вот пошаговое объяснение решения задачи:

  1. Понимание цен:
    • Билет на 1 поездку стоит 10 рублей.
    • Билет на 10 поездок стоит 235 рублей, что эквивалентно 23.5 рубля за поездку.
    • Билет на 60 поездок стоит 1005 рублей, что эквивалентно 16.75 рубля за поездку.

Из этого видно, что самый выгодный вариант — это билет на 60 поездок, затем на 10 поездок и, наконец, на 1 поездку.

  1. Составление уравнения: Мы должны найти такие целые числа \( x \), \( y \) и \( z \) (где:

    • \( x \) — количество билетов на 1 поездку,
    • \( y \) — количество билетов на 10 поездок,
    • \( z \) — количество билетов на 60 поездок), чтобы соблюдалось условие: \[ x + 10y + 60z \geq n \] И минимизировалась стоимость: \[ \text{Стоимость} = 10x + 235y + 1005z \]
  2. Перебор вариантов: Мы перебираем возможные значения \( z \), \( y \) и \( x \) так, чтобы общая стоимость была минимальной, а общее количество поездок было не менее \( n \).

Вот код на Python, который реализует данное решение:

def calculate_tickets(n):
    min_cost = float('inf')
    best_combination = (0, 0, 0)

    # Перебираем все возможные количества билетов на 60 поездок
    for z in range(n // 60 + 2):  # +2 для случаев, когда возможно потребуется еще один билет
        remaining_trip_after_z = n - 60 * z
        if remaining_trip_after_z <= 0:
            cost = 1005 * z
            if cost < min_cost:
                min_cost = cost
                best_combination = (0, 0, z)
            continue
            
        # Перебираем все возможные количества билетов на 10 поездок
        for y in range(remaining_trip_after_z // 10 + 2):
            remaining_trip_after_y = remaining_trip_after_z - 10 * y
            if remaining_trip_after_y <= 0:
                cost = 1005 * z + 235 * y
                if cost < min_cost:
                    min_cost = cost
                    best_combination = (0, y, z)
                continue
            
            x = max(remaining_trip_after_y, 0)
            cost = 10 * x + 235 * y + 1005 * z
            if cost < min_cost:
                min_cost = cost
                best_combination = (x, y, z)
    
    return best_combination

# Пример использования
n = int(input("Введите количество поездок: "))
result = calculate_tickets(n)
print(result[0], result[1], result[2])

Объяснение кода:

  • Функция calculate_tickets(n) принимает количество поездок \( n \) и ищет оптимальное количество билетов для каждого типа.
  • Внешний цикл проходит по количеству билетов на 60 поездок, считывая наибольшее количество эти билетов, которое может потребоваться.
  • Внутренний цикл проходит по количеству билетов на 10 поездок, и затем мы просто вычисляем количество билетов на 1 поездку.
  • Мы проверяем каждую комбинацию и обновляем минимальную стоимость и соответствующие количества билетов, если находим более дешевую комбинацию.
  • В конце выводятся количество билетов для 1, 10 и 60 поездок.

Таким образом, предоставленный код поможет пассажиру определить, сколько билетов каждого вида нужно купить, чтобы минимизировать затраты.