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

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

В первой строке — число 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\)).

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

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

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

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

Одна строка — слова через пробел (от 1 до 20 слов).

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

Одна строка — слова с длиной больше 3 через пробел. Если таких слов нет, выведите пустую строку.

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

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

Первая строка — целое число \(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).

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

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

📊
Шаг 8: Подсчёт атак
Средне
Мы перехватили журнал атак вируса — последовательность типов атак. Нужно подсчитать частоту каждого типа и составить отчёт в алфавитном порядке.
Условие задачи
 

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

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

Одна строка: слова через пробел (латиница, от 1 до 100 слов).

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

На каждой строке: тип и количество через пробел (в алфавитном порядке типов).

🗂️
Шаг 7: Реестр героев
Средне
Ты добрался до центральной базы данных. Каждый герой имеет позывной и уровень силы. Чтобы собрать команду для атаки на вирус, нужно быстро находить героев и определять сильнейшего.
Условие задачи
 

В первой строке дано N пар «позывной:уровень» через пробел (двоеточие без пробелов). Во второй строке — M позывных через пробел для запроса.

Для каждого запроса выведи уровень героя (через пробел в одну строку). На второй строке — позывной героя с наибольшим уровнем.

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

Первая строка: пары позывной:уровень через пробел. Вторая строка: запросы через пробел.

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

Первая строка: уровни запрошенных героев через пробел. Вторая строка: позывной сильнейшего.

Подсказка: Разбей каждую пару через .split(":"), создай словарь. Для максимума: max(d, key=d.get).
🏆
Шаг 6: Рейтинг героев
Средне
Вирус перемешал рейтинги героев. Чтобы восстановить турнирную таблицу, нужно отсортировать баллы и показать лидеров. Применяй навыки сортировки!
Условие задачи
 

Дана строка из N целых чисел — рейтинги героев. Выведи три строки:

  • все числа, отсортированные по возрастанию, через пробел;
  • три наибольших числа через пробел (от меньшего к большему);
  • среднее арифметическое, округлённое вниз (целочисленное деление).
Входные данные

Одна строка: N целых чисел через пробел (3 ≤ N ≤ 100, значения от 0 до 10000).

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

Три строки.

🛡️
Шаг 2: Фильтр аномалий
Просто
Вирус внедрил в систему аномальные значения. Нормальный сигнал — это число в допустимом диапазоне. Всё, что за границами — мусор от вируса. Отфильтруй чистые данные!
Условие задачи
 

В первой строке — два целых числа L и R — допустимый диапазон (включительно). Во второй строке — набор целых чисел через пробел.

Выведи через пробел только те числа, которые попадают в диапазон от L до R, в том же порядке.

Если подходящих чисел нет, выведи слово ПУСТО.

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

Первая строка: два целых числа L и R (L ≤ R). Вторая строка: набор целых чисел через пробел.

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

Отфильтрованные числа через пробел, или слово ПУСТО.

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