Алгоритмы обработки

45 задач
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.

В первой строке — число N, дальше N строк по шесть чисел через пробел.

Выведите, сколько строк удовлетворяют обоим условиям:

  • в строке одно число повторяется трижды, а остальные три различны;
  • квадрат суммы повторяющихся чисел больше квадрата суммы неповторяющихся.

Это условие взято из демоверсии ЕГЭ 2025 года. Для решения задачи напишите программу, считав входные данные с калвиатуры (а не с файла как в основном задании). Цель задания - проверить правильность написания программы.

Учитель ведёт журнал сдачи домашних заданий. На вход подаётся число \(N\) — количество записей. Затем \(N\) строк в формате:

имя предмет балл

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

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

Формат входных данных

Первая строка — целое число \(N\) (\(1 \le N \le 30\)).

Следующие \(N\) строк — имя, предмет и балл через пробел.

Формат выходных данных

Для каждого ученика строка в формате: Имя — X заданий, Y баллов

Интернет-магазин ведёт лог заказов. На вход подаётся число \(N\) — количество записей. Затем \(N\) строк в формате:

имя товар цена

Один покупатель может делать несколько заказов.

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

Формат входных данных

Первая строка — целое число \(N\) (\(1 \le N \le 30\)).

Следующие \(N\) строк — имя, товар и цена через пробел.

Формат выходных данных

Для каждого покупателя строка в формате: Имя — X заказов, Y руб

Ведётся протокол голов в чемпионате по футболу. На вход подаётся число \(N\) — количество записей. Затем \(N\) строк в формате:

имя матч голы

Один игрок может забивать в нескольких матчах.

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

Формат входных данных

Первая строка — целое число \(N\) (\(1 \le N \le 30\)).

Следующие \(N\) строк — имя, номер матча и голы через пробел.

Формат выходных данных

Для каждого игрока строка в формате: Имя — X голов, Y матчей

Пользователь вводит количество чисел, затем сами числа — каждое на отдельной строке, и наконец — число, которое нужно найти. Сохраните числа в список.

Выведите две строки:

  1. Исходный список — числа через пробел.
  2. Сколько раз искомое число встречается в списке.

Формат входных данных

Первая строка — целое число \(N\) (\(1 \le N \le 20\)).

Следующие \(N\) строк — по одному целому числу.

Последняя строка — искомое число \(X\).

Формат выходных данных

Первая строка — исходный список через пробел.

Вторая строка — количество вхождений числа \(X\) в список.

Примечание

Подсказка: используйте метод .count().

Пользователь вводит количество чисел, а затем сами числа — каждое на отдельной строке. Сохраните все числа в список.

Вычислите среднее арифметическое. Выведите три строки:

  1. Исходный список — числа через пробел.
  2. Среднее арифметическое, округлённое до 1 знака после запятой.
  3. Числа, которые строго больше среднего, через пробел (в порядке ввода). Если таких нет — пустая строка.

Формат входных данных

Первая строка — целое число \(N\) (\(1 \le N \le 20\)).

Следующие \(N\) строк — по одному целому числу (от \(-1000\) до \(1000\)).

Формат выходных данных

Первая строка — исходный список через пробел.

Вторая строка — среднее с одним знаком после запятой.

Третья строка — числа больше среднего через пробел.

Пользователь вводит количество чисел, а затем сами числа — каждое на отдельной строке. Сохраните все числа в список.

Выведите три строки:

  1. Исходный список — числа через пробел.
  2. Сумму чётных чисел.
  3. Сумму нечётных чисел.

Формат входных данных

Первая строка — целое число \(N\) (\(1 \le N \le 20\)).

Следующие \(N\) строк — по одному целому числу (от \(-1000\) до \(1000\)).

Формат выходных данных

Первая строка — исходный список через пробел.

Вторая строка — сумма чётных чисел (если чётных нет — выведите 0).

Третья строка — сумма нечётных чисел (если нечётных нет — выведите 0).

Пользователь вводит количество чисел, а затем сами числа — каждое на отдельной строке. Сохраните все числа в список.

Выведите три строки:

  1. Исходный список — числа через пробел.
  2. Чётные числа через пробел (в порядке ввода). Если чётных нет — пустая строка.
  3. Нечётные числа через пробел (в порядке ввода). Если нечётных нет — пустая строка.

Формат входных данных

Первая строка — целое число \(N\) (\(1 \le N \le 20\)).

Следующие \(N\) строк — по одному целому числу (от \(-1000\) до \(1000\)).

Формат выходных данных

Первая строка — исходный список через пробел.

Вторая строка — чётные числа через пробел.

Третья строка — нечётные числа через пробел.

Пользователь вводит количество чисел, а затем сами числа — каждое на отдельной строке. Сохраните все числа в список.

Выведите две строки:

  1. Исходный список — числа через пробел.
  2. Количество положительных чисел (строго больше нуля).

Формат входных данных

Первая строка — целое число \(N\) (\(1 \le N \le 20\)).

Следующие \(N\) строк — по одному целому числу (от \(-1000\) до \(1000\)).

Формат выходных данных

Первая строка — исходный список через пробел.

Вторая строка — количество положительных чисел.

Пользователь вводит количество чисел, а затем сами числа — каждое на отдельной строке. Сохраните все числа в список.

Выведите две строки:

  1. Исходный список — числа через пробел в порядке ввода.
  2. Отсортированный список — числа через пробел по возрастанию.

Формат входных данных

Первая строка — целое число \(N\) (\(1 \le N \le 20\)).

Следующие \(N\) строк — по одному целому числу (от \(-1000\) до \(1000\)).

Формат выходных данных

Две строки: исходный список и отсортированный по возрастанию, числа через пробел.

Пользователь вводит количество учеников, а затем для каждого — имя и оценку. Сохраните данные в словарь. Выведите пары в формате Имя — оценка, отсортированные по имени в алфавитном порядке.

Формат входных данных

Первая строка — целое число \(N\) (\(1 \le N \le 10\)).

Следующие \(N\) строк — имя и оценка через пробел. Имена уникальны, состоят из русских букв, начинаются с заглавной.

Формат выходных данных

\(N\) строк в формате Имя — оценка, отсортированные по имени (алфавитный порядок).

Дана строка ДНК, состоящая из символов A, T, G, C. Длина строки кратна 3. Выполните следующие вычисления:

  1. Длина последовательности.

  2. AT-состав — процентная доля нуклеотидов A и T\(\mathrm{AT\%} = \frac{|A|+|T|}{n}\times 100.\)  Округлить до 2 знаков после запятой.

  3. Транскрипция в РНК. Замените каждый нуклеотид T на U; остальные символы не меняются.

  4. Стоп-кодоны — количество кодонов (трёхбуквенных блоков), являющихся стоп-кодонами: TAA, TAG, TGA.

  5. Наименее частый нуклеотид. 

Формат ввода

Одна строка — последовательность ДНК (\(6\le n\le 300\); \(n\) кратно 3).

Формат вывода

Ровно 5 строк:

length: <целое>
at: <вещественное, 2 знака>
rna: <строка>
stop_codons: <целое>
least_frequent: <символ>

Пример ввода:

ATGTAACCGTGAAAG

Пример вывода:

length: 15
at: 60.00
rna: AUGUAACCGUGAAAG
stop_codons: 2
least_frequent: C

Разбор. Кодоны: ATG | TAA | CCG | TGA | AAG. AT-состав: \((6+3)/15=60{,}00\%\). РНК: T\(\to\)U \(\Rightarrow\) AUGUAACCGUGAAAG. Стоп-кодоны: TAA, TGA — итого 2. Частоты: \(A{=}6,\;G{=}4,\;T{=}3,\;C{=}2\) \(\Rightarrow\) наименее частый — C.

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

Формат входных данных

В первой строке подаётся количество событий N (N ≥ 2). В каждой из следующих N строк — два целых числа: часы и минуты начала события (0 ≤ часы ≤ 23, 0 ≤ минуты ≤ 59).

Формат выходных данных

Два числа через пробел — разница в часах и минутах между самым поздним и самым ранним событием.

Как часть исследования вопроса "почему коровы переходят дороги", Фермер Джон получить задание составить документ о том, сколько раз каждая из его коров переходила дорогу. Он тщательно залоггировал данные о местоположении каждой из его коров, и выполнил серию из \(N\) наблюдений в течение дня. Каждое наблюдение содержало ID коровы (целое число в интервале \(1 \ldots 10\), поскольку у ФД было всего 10 коров), а также на какой стороне дороги находится корова.

Основываясь на данных записанных ФД, помогите ему посчитать общее число подтверждённых пересечений. Подтверждённые пересечения - это когда при последовательных наблюдениях, корова находилась на разных сторонах дороги.

ФОРМАТ ВВОДА (файл crossroad.in):

Первая строка ввода содержит количество наблюдений, \(N\), положительное целое число не более 100. Каждая из последующих \(N\) строк содержит одно наблюдение, которое содержит ID коровы за которым стоит число 0 или 1 (0 на одной стороне дороги, 1 на другой стороне дороги).

ФОРМАТ ВЫВОДА (файл crossroad.out):

Вычислите общее количество подтверждённых пересечений.

У Фермера Джона есть 7 молочных коров: Bessie, Elsie, Daisy, Gertie, Annabelle, Maggie, Henrietta. Он доит их каждый день и хранит детальный протокол количества молока, которая дала каждая корова во время каждой дойки. Не удивительно, что ФД поощряет коров, которые дают больше молока.

Коровы, ленивые по природе, не хотят производить много молока. Они хотят производить второе по минимальности количество моллока. Определите, сколько коров занимают эту позицию.

ФОРМАТ ВВОДА (файл notlast.in):

Ввод начинается со строки, содержащей целое число \(N\) (\(1 \leq N \leq 100\)), определяющее количество записей в протоколе дойки.

Каждая из \(N\) последующих строк содержит имя коровы (одно из 7 указанных выше), за которым следует положиельное число (не более 100), указывающее количество молока, которое произвела корова во время очережной дойки.

Любая корова, которая не появилась протоколе - не произвела молока вообще.

ФОРМАТ ВЫВОДА (файл notlast.out):

В единственной строке вывода выведите имя коровы, которая произвела второе по минимальности количество молока. Более точно, если \(M\) минимальное количество молока из всех произведённых коровами, выведите имя коровы, которая произвела минимальное колчиество млока, большее чем \(M\). Если несколько коров произвели такое количество молока или нет аких коров (т.е. все произвели по \(M\) молока), выведите слово "Tie". Не забудьте добавить символ перевода строки в своему выводу. Заметим, что \(M=0\) если одна из коров полностью отсутствует в протоколе дойки.

Беси и её подружки играют в супергероев. Все знают, что каждый супергерой имеет сигнал, призывающий его к действию. Беси нарисовала специальный сигнал на листке бумаги размером \(M \times N\) (\(1 \leq M \leq 10, 1 \leq N \leq 10\)), но он получился очень маленький. Беси хочет его увеличить ровно в K (\(1 \leq K \leq 10\)) раз в каждом направлении.

Этот сигнал состоит только из символов '.' и 'X'.

ФОРМАТ ВВОДА (файл cowsignal.in):

Первая строка ввода содержит \(M\), \(N\), \(K\), разделённые одиночными пробелами.

Каждая из следующих \(M\) строк содержит строку символов длиной \(N\). Все вместе они и описывают сигнал.

ФОРРМАТ ВВОДА (файл cowsignal.out):

Вы должны вывести \(KM\) строк, каждая с \(KN\) символами, представляющими картинку увеличенного сигнала.

Фермер Джон пытается научить своих коров читать, дав им множество из N дощечек, обычно используемых дошкольниками (\(1 \leq N \leq 100\)). Каждая дощечка имеет слово и рисунок на каждой стороне. Например, одна сторона может иметь слово 'cat' и картинку кота на одной стороне и слово 'dog' и картинку собаки на другой стороне.

Когда дощечки лежат на земле, видно \(N\) слов. Переворачивая таблички можно получать различные множества из \(N\) слов. Чтобы помочь коровам запомнить буквы, ФД хочет подготовить некоторое количество деревянных блоков, на каждом из которых выписана одна буква алфавита. Он хочет подготовить достаточное количество блоков с каждой буквой, для того чтобы вне зависимости от того, какое множество из \(N\) слов показывается, коровы могли составить все слова используя эти блоки. Например, если \(N=3\) и на табличках представлены слова 'box', 'cat', 'car', коровам нужно как минимум 1 'b', 1 'o', 1 'x', 2 'c', 2 'a', 1 't', 1 'r'.

Помогите ФД определить минимальное количество блоков для каждой буквы алфавита, которые он должен обеспечить, чтобы вне зависимости от того какой стороной вверх направлены таблички, можно было составить все \(N\) видимых слов.

ФОРМАТ ВВОДА (файл blocks.in):

Строка 1 содержит целое число \(N\).

Каждая из следующих \(N\) строк содержит 2 слова, разделённых одиночным пробелом, задавая два слова на противоположных сторонах дощечки. Каждое слово – строка не более чем из 10 маленьких английских букв.

ФОРМАТ ВЫВОДА (файл blocks.out):

Выведите 26 строк. Первая выходная строка должна содержать требуемое количество букв ‘a’. Следующая строка должна содержать требуемое количество букв ‘b’. И т.д.

Herdle#90163
Коровы создали новый вид пазлов, который назвали Herdle.

Каждый день они выпускают новый пазл. Пазл представляет собой решётку 3*3, гже каждая клетка занята коровой определённой породы. Всего имеется 26 различных видов пород, которые представляются большими латинским буквами от A до Z. Играющий должен узнать тип породы в каждой клетке через серию запросов. В каждом запросе от представляет 3*3 латинских букв. Ответ формируется следующим образом: если буквы угаданы, они подсвечиваются зелёным, Буквы верной породы, но не на своём месте подсвечиваются жёлтым.

Количество подсвеченных указывает, сколько их должно быть. Например, предположим, что гипотеза содержит 4 символа A, а правильный ответ содержит только 2 символа A, причём ни одна позиция не угадана. Тогда в ответе на этот запрос только 2 символа A будут подсвечены жёлтым. В общем случае, если \(x\) коров определённой породы в запросе и только \(y\) - в правильном ответе (не считая коров, которые уже стоят на своём месте и будут подсвечены зелёным), только \(y\) из этих \(x\) коров будут подсвечены жёлтым.

По заданным правильному ответу и запросу вычислите количество квадратов, подсвеченных зелёным цветом и количество квадратов, подсвеченных жёлтым цветом.

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Первые 3 строки ввода содержат решётку, представляющую правильный ответ. Слеующие 3 строки представляют запрос.

ФОРМАТ ВЫВОДА(на экран / stdout):

Выведите две строки. В первой - количество квадратов, которые будут подсвечены зелёным цветом, во второй - количество квадратов, которые будут подсвечены жёлтым цветом

Поделиться
Класснуть