М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
dankillyou2014
dankillyou2014
29.12.2020 21:51 •  Информатика

Билеты на поезд
даниил организует поездку школьников на олимпиаду по программированию. поезд, на котором планируется добраться до места проведения олимпиады, уже выбран; осталось лишь купить билеты. на данный момент свободные места остались в n купе, притом в i-м из этих купе свободно ровно ai мест.

чтобы школьникам было нескучно, им была предоставлена возможность объединиться в пары или тройки, которые будут ехать в одном купе. всего k2 пар и k3 троек школьников изъявили желание путешествовать в одном купе. оставшиеся k1 школьников не высказали никаких предпочтений. все эти школьники различны, то есть всего на олимпиаду поедет k1 + 2×k2 + 3×k3 школьников.

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

формат входных данных
первая строка содержит одно целое число t (1 ≤ t ≤ 100) — количество тестов. далее следует описание t тестов. каждый из тестов описывается тремя строками.

первая строка описания теста содержит одно целое число n (1 ≤ n ≤ 105) — количество оставшихся купе.

вторая строка описания теста содержит n целых чисел a1, a2, …, an (1 ≤ ai ≤ 4) — количества свободных мест в оставшихся купе.

третья строка описания теста содержит три целых числа k1, k2 и k3 (0 ≤ ki ≤ 4×105) — количество школьников, которые не высказали никаких предпочтений, а также количество пар школьников и количество троек школьников, желающих быть в одном купе, соответственно.

гарантируется, что сумма всех n не превосходит 105.

формат результата
выведите t строк, i-я из которых содержит «yes», если в i-м тесте возможно купить билеты, удовлетворив все пожелания, и «no» в противном случае.

👇
Ответ:
lublubkoba
lublubkoba
29.12.2020
")

   a.append(k)

l = 0

for i in range(len(a)):

   if a[i]>=3:

       l = l+1

       a[i] = a[i]-3

       if l == three:

           break

print(l,"тройки")

print(a)

j = 0

for i in range(len(a)):

   if a[i]>=2:

       j = j+1

       a[i] = a[i]-2

       if j == two:

           break

print(j,"двойки")

print(a)

m = 0

for i in range(len(a)):

   if a[i]>=1:

       m = m+1

       a[i] = a[i] - 1

       if m == one:

           break

print(m,"одиночки")

print(a)

if l>=three and j>=two and m>=one:

   print("YES")

else:

   print("NO")

Объяснение:

надеюсь в коде разберешься )

написано в питоне

4,7(56 оценок)
Открыть все ответы
Ответ:
dimabos888
dimabos888
29.12.2020

1)

var

  str : string;

begin

  readln (str);

  writeln (length (str) - pos (':', str));

end.

 

2)

var

  str, s : string;

  count, i : integer;

begin

  readln (str);

  s := copy (s, pos ('(', str) + 1, pos (')', str) - pos ('(', str) - 1);

  count := 0;

  for i := 1 to length (s) do

    if s[i] = ' ' then inc (count);

  writeln (count + 1);

end.

 

3)

var

  str : string;

  count : integer;

begin

  readln (str);

  count := 0;

  while pos (',', str) > 0 do

  begin

    inc (count);

    delete (str, pos (',', str), 1);

  end;

  writeln (str);

  writeln (count);

end.

 

Сделано без проверки на соответствие условию.

4,5(42 оценок)
Ответ:
книга67
книга67
29.12.2020

var

k : byte;
arr : array of int64;
function Fn (c : byte) : int64;
begin
if arr[c - 1] <> 0 then
begin
Fn := arr[c - 1];
exit;
end;
if c < 3 then Fn := 1
else Fn := Fn (c - 1) + Fn (c - 2);
arr[c - 1] := Result;
end;

begin
read (k);
setlength (arr, k);
writeln (Fn (k));
end.

var
n : byte;
arr : array of int64;

tmp : int64;
function Fn (c : byte) : int64;
begin
if arr[c - 1] <> 0 then
begin
Fn := arr[c - 1];
exit;
end;
if c < 3 then Fn := 1
else Fn := Fn (c - 1) + Fn (c - 2);
arr[c - 1] := Result;
end;

begin
read (n);
setlength (arr, n);
tmp :=  (Fn (n));

tmp := 0;

for i := 1 to n do

  tmp := (tmp + arr[i]) mod 2;

if tmp = 1 then writeln ('No') else writeln ('Yes');

end.

 

Это нисходящее динамическое программирование. В массиве Arr храняится сами числа. Рекурсивная функция Fn (n) возвращает N-ое число. В б) мы сначала просчитываем n чисел (то есть считаем число n, так как для него нужны все предыдущие), а потом ищем их сумму. Так как числа могут быть большими, то мы берем сразу их остаток от деления 2 во избежание преполнения.

 

4,4(22 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ