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

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

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

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

решить в python

ruks777 ruks777    1   10.10.2019 15:27    152

Ответы
sergooopoop sergooopoop  10.10.2019 16:20

//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 штук(а)

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

ПОКАЗАТЬ ОТВЕТЫ
Ihop Ihop  09.01.2024 23:03
Добрый день! Давайте разберемся с задачей.

У нас есть три вида билетов: на 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)
```

Надеюсь, что данное пошаговое решение помогло вам понять, как решить данную задачу школьному ученику. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их!
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика