69Unicorn69
29.03.2021 15:59

Питон 17 !
за билетами на премьеру нового мюзикла выстроилась очередь из n человек, каждый из которых хочет купить 1 билет. на всю очередь работала только одна касса, поэтому продажа билетов шла медленно, приводя «постояльцев» очереди в отчаяние. самые сообразительные быстро заметили, что, как правило, несколько билетов в одни руки кассир продаёт быстрее, чем когда эти же билеты по одному. поэтому они предложили нескольким подряд стоящим людям отдавать деньги первому из них, чтобы он купил билеты на всех.

однако для борьбы со спекулянтами кассир продавала не более 3-х билетов в одни руки, поэтому договориться таким образом между собой могли лишь 2 или 3 подряд стоящих человека.

известно, что на продажу i-му человеку из очереди одного билета кассир тратит ai секунд, на продажу двух билетов — bi секунд, трех билетов — ci секунд. напишите программу, которая подсчитает минимальное время, за которое могли быть обслужены все покупатели.

обратите внимание, что билеты на группу объединившихся людей всегда покупает первый из них. также никто в целях ускорения не покупает лишних билетов (то есть билетов, которые никому не нужны).

входные данные
на вход программы поступает сначала число n — количество покупателей в очереди (1≤n≤5000). далее идет n троек натуральных чисел ai, bi, ci. каждое из этих чисел не превышает 3600. люди в очереди нумеруются, начиная от кассы.

выходные данные
требуется вывести одно число — минимальное время в секундах, за которое могли быть обслужены все покупатели.

примеры
входные данные
5
5 10 15
2 10 15
5 5 5
20 20 1
20 1 1
выходные данные
12

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
matthewfeat
10.06.2020 11:36
Задание №1
//PascalABC.NET (версия 3.1, сборка 1198 от 11.03.2016)
Задание №1
var
  a, b, i, s1, s2, s3,k: integer;

begin
  a := readinteger('Введите первое трехзначное число');
  b := readinteger('Введите второе трехзначное число');
  for i := a to b do
  begin
    k:=0;
    s1 := i mod 10; k:=1;
    s2 := (i div 10) mod 10;
    if s2=s1 then k:=k+1;
    s3 := (i div 100)mod 10;
    if s3=s1 then k:=k+1;  
    if k = 2 then println(i);
  end;
end.

Тестовое решение:
Введите первое трехзначное число 100
Введите второе трехзначное число 200
100
101
121
122
131
133
141
144
151
155
161
166
171
177
181
188
191
199
200

Задание №2
//PascalABC.NET (версия 3.1, сборка 1198 от 11.03.2016)
var a,b,n:integer;
  p:biginteger;
begin
  repeat
    a:=readlninteger('Введите a');
    n:=readlninteger('Введите n');
  until (a>0) and (n > 0);
  p:=1;
  for var i:=1 to n do begin
    p:=p*a;
  end;
  println(a, 'в степени', n,' = ',p);
    p:=1;
  for var i:=1 to a do begin
    p:=p*n;
  end;
  println(n, 'в степени', a,' = ',p);
 end. 

Тестовое решение:

Введите a
2
Введите n
 3
2 в степени 3  =  8
3 в степени 2  =  9
0,0(0 оценок)
Ответ:
anyanaffanya
01.11.2022 01:44

import math

print("Введите кол-во чисел в последовательности:")

leangth_nums = input();

if int(leangth_nums) <= 1000:

   i = 0;

   nums_arr_five = [];

   print("Введите числа, когда вы решите что чисел хватит напишите stop")

   while i <= 999:

       num_input = input()

       if (num_input == "stop"):

           break;

       else:

           if (int(num_input) % 5 == 0):

               if (int(num_input) < 30000):

                   nums_arr_five.append(int(num_input))

                   i+=1

               else:

                   print("num > 30000")

           else:

               i += 1

               continue

   print(max(nums_arr_five))

else:

   print("Error leanth_nums is have lean. > 1000")

Объяснение:

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