FPCБилет ** одну поездку в метро стоит 15 рублей, билет ** 10 поездок стоит 125 рублей,...

0 голосов
749 просмотров

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;<br> if t=9 then p:=j+1
else
if t<9 then m:=t;<br> writeln(m,' ',p,' ',s)
end.













Информатика | 749 просмотров
0

интересная задача

0

сама идея правильная

0

))

0

поправочка....написала.

0

сейчас скину правильный код

0

код написал ты неправильно так как у тебя даже если ты уже в первом случае купил к примеру 2 билета по 60 поездок(нужно 87) то у тебя к ним прибавляется еще 3 билета по 10 и 7 билетов по 1

0

да вкурсе я)но вот уже который час не могу написать правельный код)дилема

Дано ответов: 2
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.

(1.1k баллов)
0

var l,k,j,t,n:integer;
begin
read(n); //166
l:=n div 60; //2
k:=n mod 60; //46
j:=k div 10; //4
t:=k mod 10; //6
if t=9 then j:=j+1;
if t=9 then t:=0;
If k>=35 then
begin
l:=l+1;
t:=0;
j:=0
end;
writeln(t,' ',j,' ',l)
end.

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;<br>if t=9 then p:=j+1
else
if t<9 then m:=t;<br>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.


image
image
(164 баллов)
0

7 на 1, 2 на 10, 1 на 60

0

Спасибо , две недели думал.

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.

0

твоя задача тоже не прошла.........

0

вы в 11 классе тока это делаете? или ты так для себя?)

0

блин...это я уже ищу ошибки где их нет

0

я не знаю че у тя без пробелов выводит

0

жаль

0

не знаю мне норм,я и здесь с людьми общаюсь...

0

правильный комментарий перед моим