• Предмет: Информатика
  • Автор: Аноним
  • Вопрос задан 10 лет назад

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

Формат входных данных

Дано одно число n - количество поездок.

Формат выходных данных

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

Примеры
Входные данные
129
Выходные данные
0 1 2

расбор.....
Целая часть от деления n на 60 будет являтся количеством билетов на 60 поездок. Однако если остаток, полученый в результате этого деления, будет больше или равен 35, то "выгоднее" купить ешё 1 билет на 60 поездок, чем 3 на 10 и 5 на 1. Если остаток меньше 35 - берем целую часть от его деления на 10 - получим кол-во белетов на 10 поездок. Если остаток от этого деления равен 9, то "выгоднее" купить ещё 1 билет на 10 поездок, чем 9 на 1. Если остаток меньше 9 - то этот остаток и будет являться кол-вом билетов на 1 поездку.


вопрос...
что не так с моим кодом?

var l,k,j,t,m,p,s,n:longint;
begin
read(n);
l:=n div 60;
k:=n mod 60;
j:=k div 10;
t:=k mod 10;
if l>=1 then s:=l;
if k>=35 then s:=l+1
else
if k<35 then p:=j;
if t=9 then p:=j+1
else
if t<9 then m:=t;
writeln(m,' ',p,' ',s)
end.











Ответы

Ответ дал: ubunt
0
var  n,i : integer; 
    a : array [1..3] of integer;
 begin
Read(n);
 While n>=35 do 
  begin
  inc(a[3]); 
 n:=n-60; 
end;
 While n>=9 do  
 begin 
 inc(a[2]);
  n:=n-10;
  end;
 While n>=1 do 
  begin 
 inc(a[1]);
  dec(n);
  end;
 for i:=1 to 3 do 
 Write(a[i], ' ');
 end.
Ответ дал: ubunt
0
var l,k,j,t,m,p,s,n: integer;
begin
read(n);
l:=n div 60;
k:=n mod 60;
j:=k div 10;
t:=k mod 10;
if l>=1 then s:=l;
if k>=35 then s:=l+1
else
if k<35 then p:=j;
if t=9 then p:=j+1
else
if t<9 then m:=t;
if s>l then m:=0;
writeln(m,' ',p,' ',s)
end.
Ответ дал: ЕвпатийКоловратий
0
var
l,k,j,t,n1,m,p,s,n:longint;
begin
read(n);
l:=n div 60;
k:=n mod 60;  
if k>34 then
l:=l+1
else
begin
j:=k div 10;  
t:=k mod 10;  
if t=9 then
j:=j+1
else
 n1:=t;
end;
writeln(n1,' ',j,' ',l);
end.
Приложения:
Ответ дал: ЕвпатийКоловратий
0
вы в 11 классе тока это делаете? или ты так для себя?)
Ответ дал: kage1998
0
это я.. вот 100% правильный код:program gt;
var n,a,b,c:longint;
begin
read(n);
a:=n div 60;
b:=((n mod 60))div 10;
c:=((n mod 60) mod 10);
if(c=9)then begin
c:=0;
b:=b+1;
end;
if(b*10+c>=35)then begin
a:=a+1;
b:=0;
end;
if(a*60>n)then begin
b:=0;
c:=0;
end;
if((a*60+b*10)>n)then c:=0;
writeln(c,' ',b,' ',a);
end.
Ответ дал: блин3
0
Спасибо , две недели думал.
Ответ дал: блин3
0
правильный комментарий перед моим
Вас заинтересует