М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
kklll1g
kklll1g
07.09.2022 10:21 •  Информатика

Давным-давно билет на одну поездку в метро стоил 15 рублей, билет на 10 поездок стоил 125 рублей, билет на 60 поездок стоил 440 рублей. пассажир планирует совершить n поездок. определите, сколько билетов каждого вида он должен приобрести, чтобы суммарное количество оплаченных поездок было не меньше n, а общая стоимость приобретенных билетов — минимальна.

входные данные
программа получает на вход одно число n.

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

примеры
входные данные
36
выходные данные
0 0 1
входные данные
64
выходные данные
4 0 1

решить в python

👇
Ответ:
irina699
irina699
07.09.2022

//pascalabc.net

//версия 3.3, сборка 1634 (14.02.2018)

begin

  var (cost, t, k) : = (arr(15, 70, 125, 230, 440), arr(1, 5, 10, 20, 60), new integer[5]);

  var n : = readinteger('n-> ');

  for var i : = 4 downto 0 do

  begin

    k[i] : = n div t[i]; n : = n mod t[i];

  end;  

  if k[0] * cost[0] > = cost[1] then begin k[0] : = 0; inc(k[1]); end;

  if k[0] * cost[0] + k[1] * cost[1] > = cost[2] then 

  begin

    k[0] : = 0; k[1] : = 0; inc(k[2]);  

  end;

  if k[0] * cost[0] + k[1] * cost[1] + k[2] * cost[2] > = cost[3] then 

  begin

    k[0] : = 0; k[1] : = 0; k[2] : = 0; inc(k[3]);

  end;

  if k[0] * cost[0] + k[1] * cost[1] + k[2] * cost[2] + k[3] * cost[3] > = cost[4] then 

  begin

    k[0] : = 0; k[1] : = 0; k[2] : = 0; k[3] : = 0; inc(k[4]);  

  end;

 

  for var i : = 0 to 4 do writelnformat('{0} билет(ов)- {1} штук(а)', t[i], k[i]);

end.

пример(1):

n-> 37

1 билет(ов)- 0 штук(а)

5 билет(ов)- 0 штук(а)

10 билет(ов)- 0 штук(а)

20 билет(ов)- 0 штук(а)

60 билет(ов)- 1 штук(а)

пример(2):

n-> 35

1 билет(ов)- 0 штук(а)

5 билет(ов)- 1 штук(а)

10 билет(ов)- 1 штук(а)

20 билет(ов)- 1 штук(а)

60 билет(ов)- 0 штук(а)

подробнее - на -

4,8(96 оценок)
Ответ:
TaHoC
TaHoC
07.09.2022
Добрый день! Давайте разберемся с задачей.

У нас есть три вида билетов: на 1 поездку, на 10 поездок и на 60 поездок. Нам нужно определить, сколько билетов каждого вида мы должны приобрести, чтобы суммарное количество оплаченных поездок было не меньше n, а общая стоимость приобретенных билетов была минимальной.

Предлагаю решить эту задачу пошагово в следующем порядке:

1. Начнем с того, что прочитаем входные данные. У нас есть число n - количество поездок, которые пассажир планирует совершить. Для этого воспользуемся функцией input(). Напишем:

n = int(input())

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

Начнем с билетов на 60 поездок. Один такой билет стоит 440 рублей, а значит одна поездка на 60-кратном билете стоит 440 / 60 = 7.33 рубля.
Чтобы узнать, сколько поездок на 60-кратном билете можно оплатить, мы должны разделить количество денег, которое у нас есть, на стоимость одной поездки в билете на 60 поездок. Но для начала проверим, делится ли количество поездок, которое пассажир планирует совершить, на 60 без остатка. Для этого воспользуемся операцией %, которая возвращает остаток от деления. Если остаток равен 0, значит количество поездок делится на 60 без остатка и нам нужно приобрести только билеты на 60 поездок. Если остаток не равен 0, значит количество поездок не делится на 60 без остатка и нам нужно будет приобрести еще билеты на 1 и/или на 10 поездок.

Напишем код для определения количества билетов на 60 поездок:

if n % 60 == 0:
count_60 = n // 60 # количество билетов на 60 поездок
else:
count_60 = n // 60 + 1

3. Теперь перейдем к билетам на 10 поездок. Мы уже знаем количество билетов на 60 поездок. Чтобы определить, сколько билетов на 10 поездок нам нужно приобрести, вычтем из общего количества поездок количество поездок, которые можно сделать на 60-кратном билете. То есть, количество билетов на 10 поездок будет равно остатку от деления общего количества поездок на 10. Напишем:

count_10 = (n - count_60 * 60) // 10

4. И, наконец, перейдем к билетам на 1 поездку. Определить количество билетов на 1 поездку можно, просто вычтя из общего количества поездок уже оплаченные поездки на 10 и 60 поездок. Напишем:

count_1 = n - count_10 * 10 - count_60 * 60

5. Теперь остается только вывести полученные значения. Напишем:

print(count_1, count_10, count_60)

Таким образом, получается полный код для решения этой задачи на языке Python:

```
n = int(input())

if n % 60 == 0:
count_60 = n // 60
else:
count_60 = n // 60 + 1

count_10 = (n - count_60 * 60) // 10
count_1 = n - count_10 * 10 - count_60 * 60

print(count_1, count_10, count_60)
```

Надеюсь, что данное пошаговое решение помогло вам понять, как решить данную задачу школьному ученику. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их!
4,6(68 оценок)
Проверить ответ в нейросети
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ