DarkWolf100
09.10.2020 19:28

4. Не подпоследовательность Ограничение времени 2 секунды
Ограничение памяти 244Mb
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
Назовем последовательность X = (x1, x2, …, xt) подпоследовательностью другой последовательностиY = (y_1, y_2, …, y_s), если какие-то элементы (возможно ни одного) можно удалить из последовательности Y, чтобы получить последовательность X.

Например, последовательность (1, 2, 3, 2) является подпоследовательностью последовательности (1, 1, 2, 2, 1, 3, 2, 1), а последовательность (1, 2, 3, 1, 2) – нет.

Заданы две последовательности A = (a1, a2, …, am) и B = (b1, b2, …, bn), состоящие из целых чисел в диапазоне от 1 до k. Необходимо найти наименьшую по длине последовательность C = (c1, c2, …, cp), которая не являлась бы подпоследовательностью ни A, ни B. Элементы последовательности C также должны являться целыми числами в диапазоне от 1 до k.

Формат ввода
В первой строке стандартного ввода содержится число k – максимальное значение элемента последовательности (1 ≤ k ≤ 5 000).

Во второй строке содержится число m – длина первой последовательности А (1 ≤ m ≤ 5 000). В третьей строке содержатся m целых чисел в интервале от 1 до k – последовательность A.

В четвертой строке содержится число n – длина второй последовательности B (1 ≤ n ≤ 5 000). В пятой строке содержатся n целых чисел в диапазоне от 1 до k — последовательность B.

Формат вывода
В первой строке стандартного вывода необходимо вывести p – длину искомой последовательности. Во второй строке — саму последовательность C. Если последовательностей такой длины несколько, можно вывести любую из них.

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
Пааапртоо
09.10.2022 03:41
Давай попробуем рассуждать логически.
Если бы сад состоял из двух деревьев, то было бы два варианта садов: 100+99 и 100+101. Если бы досадили третье дерево, то каждый из предыдущих садов удвоил бы число вариантов: первый 100+99+98 и 100+99+100, и так же второй 100+101+100 и 100+101+102. Подмечаем закономерность: каждое добавляемое дерево удваивает количество вариантов. А сад из одного дерева имеет лишь один вариант.

Поэтому ответ: 1 * 2 * 2 * 2 * ... (десять двоек умножаются) = 2^10 = 1024 варианта садов. 

Думаю что так, если не напутал. Но ты лучше проверь за мной. 
0,0(0 оценок)
Ответ:
Kamila7811
23.02.2022 02:25
Сначала надо избавиться от ошибок (пункт №3)
иначе не сможем выполнить 1 и 2 пункт задания.
  Исправляем if N mod 10 k:=N mod 10; на if (N mod 10 < k) then k:=N mod 10;
  Исправляем N:N div 10; на N:= N div 10;
 
После исправления ошибок при вводе 537 получим 3
Программа будет работать правильно для любого числа,
у которого вторая цифра слева меньше первой цифры, например:
7193

Чтобы программа работала правильно для всех чисел надо
изменить это: while N > 10 do на while N > 0 do

После всех исправлений код программы стал таким:
var
  N, k: integer;
begin
  readln(N);
  k := 9;
  while N > 10 do
  begin
    if (N mod 10 < k) then k := N mod 10;
    N := N div 10;
  end;
  write(k)
end.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота