помогите, пожалуйста, доработать программу
Билет на одну поездку в метро стоит 15 рублей, билет на 5 поездок стоит 70 рублей, билет на 10 поездок стоит 125 рублей, билет на 20 поездок стоит 230 рублей, билет на 60 поездок стоит 440 рублей. Пассажир планирует совершить n поездок. Определите, сколько билетов каждого вида он должен приобрести, чтобы суммарное количество оплаченных поездок было не меньше n, а общая стоимость приобретенных билетов – минимальна.
Формат входных данных
Дано одно число n - количество поездок.
Формат выходных данных
Выведите пять целых чисел, равные необходимому количеству билетов на 1, на 5, на 10, на 20, на 60 поездок. Если для какого-то данного n существует несколько способов приобретения билетов одинаковой стоимости, необходимо вывести ту комбинацию билетов, которая дает большее число поездок.
Разбор добавил Константин Софиюк
Целочисленным делением n на 60 находим кол-во билетов по 60 поездок, если остаток деления будет >= 36, то выгоднее докупить еще один билет по 60, чем докупать по 20, 5 и т. д. (можно заметить, что если купить 1х20, 1х10, 1х5,1х1 билетов (36 поездок) , то мы получаем стоимость равную цене билета по 60, но за эту же стоимость можно купить 60 поездок, поэтому берем еще один по 60). Если еще есть остаток, то докупаем кол-во билетов равное целочисленному делению остатка на 20, получаем остаток от этого деления и, если он >= 18, то выгоднее докупить еще один билет по 20. Повторяем целочисленное деление только уже на 10, получаем кол-во билетов по 10, если остаток от этого деления равен 9, то докупаем еще один билет по 10. Кол-во билетов по 5 получаем также целочисленным делением. Кол-во билетов по 1 будет равно конечному остатку.
загвоздка вот в этом : Если для какого-то данного n существует несколько способов приобретения билетов одинаковой стоимости, необходимо вывести ту комбинацию билетов, которая дает большее число поездок
вот программа
var n,m1, m5, m10, m20, m60, m:longint;
begin
read(n);
m60:=n div 60; {кол-во билетов по 60}
m1:=0;
m5:=0;
m10:=0;
m20:=0;
m:= n mod 60;
if m >=36 then inc(m60)
else
begin
m:=m mod 20;
m20:=m div 20 ; {кол-во билетов по 20}
if m>=18 then inc(m20) else
begin
m:=m mod 10;
m10:=m div 10;{кол-во билетов по 10}
if m mod 10=9 then inc(m10) else
begin
//m:=m mod ;
m5:=m div 5; {по 5}
m1:=m mod 5 {по 1}
end
end
end;
writeln(m1, ' ', m5, ' ', m10, ' ', m20, ' ', m60)
end.