juliajulia005
08.03.2021 08:15

Билеты на метро
Давным-давно цены на билеты в московском метро были такими:

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

Входные данные

Программа получает на вход одно натуральное число n, не превосходящее 10000.

Выходные данные

Программа должна вывести пять целых чисел: количество билетов на 1,5,10,20,60 поездок, которое необходимо приобрести. Если для какого-то данного n существует несколько приобретения билетов одинаковой суммарной стоимости, необходимо вывести ту комбинацию билетов, которая дает большее число поездок.
Есть такая задача, можите надо написать на python 3, что с моей не так, при n=59 выдаёт неправильный ответ:
n=int(input())
if n%60==0:
e=n//60
else:
e=n//60
if (n-e*60)%20==0:
d=(n-e*60)//20
else:
d=(n-e*60)//20
if (n-e*60-d*20)%10==0:
c=(n-e*60-d*20)//10
else:
c=(n-e*60-d*20)//10
if (n-e*60-d*20-c*10)%5==0:
b=(n-e*60-d*20-c*10)//5
else:
b=(n-e*60-d*20-c*10)//5
a=(n-e*60-d*20-c*10-b*5)//1
print(a,b,c,d,e)
Программа.

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
vladskills09
14.11.2020 08:14

program fantscrin;

    var x_1,x_2,h,j,i: integer; f: boolean; a: array [1..3] of string; k,l: string;

    function chek_number(a: integer): boolean;

    var k: integer;

    begin

      if (a mod 2 < > 0) then  

                        begin  

                          chek_number: =false;

                          exit;

                        end;                  

      while a > 0 do

      begin

        a: =a div 10;

        k: =k+1;

      end;

      if (k = 3) then chek_number: =true

                else chek_number: =false;  

    end;

begin

    f: =false;

    while f = false do

    begin

      write('введите 1-ое число: '); readln(x_1);

      f: =chek_number(x_1);

    end;

    f: =false;

    while f = false do

    begin

      write('введите 2-ое число: '); readln(x_2);

      f: =chek_number(x_2);

      if (f) then if (x_1 < > x_2) then f: =true

                                  else f: =false;

    end;

   

    str(x_2,l);

    str(x_1,k);

    i: =1;

    h: =1;

    while i< =3 do

    begin

      j: =1;

      while j< =3 do

      begin

        if (k[i] = l[j]) then  

                        begin    

                            a[h]: =k[i];

                            h: =h+1;

                        end;

        j: =j+1;

      end;

      i: =i+1;

    end;

    writeln('');  

    i: =1;

    while i < =3 do

    begin

      write (a[i], '   ');

      i: =i+1;

    end;

end.

0,0(0 оценок)
Ответ:
сауле49
09.11.2020 06:17

    f(x) = (x^2 -1)/(x^3 -1) = (x-1)(x+1) / (x-1)(x^2+x+1) = (x+1) / (x^2+x+1)  

f(1) = (1+1)/(1^2+1+1)=2/3  

 

но лучше так  

lim(x-> -1)(x^3-1)= lim(x-> 1-) ((x-1)(x+1) / (x-1)(x^2+x+1))=lim(x-> +1) / (x^2+x+1))=2/3  

lim(x-> 1+)(x^2-1)(x^3-1)= lim(x-> 1+) ((x-1)(x+1) / (x-1)(x^2+x+1))=lim(x-> 1++1) / (x^2+x+1))=2/3  

получаем, что x=1 - точка разрыва 1-го рода,  

но так как f(1-)=f(1+) - разрыв устранимый, потому что f(x) становится непрерывной, если положить f(1)=f(1-0)=f(1+0)=2/3

0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота