Типы данных

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

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

На вход подаётся число \(N\), затем \(N\) слов (каждое с новой строки, все строчные).

Программа должна:

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

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

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

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

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

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

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

На вход подаётся число \(N\), затем \(N\) слов (каждое с новой строки, все строчные).

Программа должна:

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

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

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

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

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

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

Два слова являются анаграммами, если одно можно получить из другого перестановкой букв. Например, «кот», «ток» и «кто» — это анаграммы друг друга.

На вход подаётся число \(N\), затем \(N\) слов (каждое с новой строки, все строчные).

Программа должна:

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

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

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

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

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

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

Примечание

Подсказка: два слова — анаграммы, если при сортировке их букв получается одинаковый результат. Например, sorted("кот") и sorted("ток") оба дают ['к', 'о', 'т'].

Определите учащихся с наилучшей успеваемостью, то есть с максимальным средним баллом по трем предметам. Выведите всех учащихся, имеющих максимальный средний балл.


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

Заданы сначала количество учащихся n, затем n строк, каждая из которых содержит фамилию, имя и три числа (оценки по трем предметам: математике, физике, информатике). Данные в строке разделены одним пробелом. Оценки принимают значение от 1 до 5.


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

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

Выведите фамилии и имена учащихся в порядке убывания их среднего балла.

Входные данные
Заданы сначала количество учащихся n, затем n строк, каждая из которых содержит фамилию, имя и три числа (оценки по трем предметам: математике, физике, информатике). Данные в строке разделены одним пробелом. Оценки принимают значение от 1 до 5.

Общее число учащихся не превосходит 100001.
Выходные данные
Необходимо вывести пары фамилия-имя по одной на строке, разделяя фамилию и имя одним пробелом. Выводить оценки не нужно. Если несколько учащихся имеют одинаковые средние баллы, то их нужно выводить в порядке, заданном во входных данных.
 

Примеры
Входные данные Выходные данные
1 2
Markov Valeriy 1 1 1
Ivanov Ivan 2 2 2
Ivanov Ivan
Markov Valeriy
2 3
Markov Valeriy 5 5 5
Sergey Petrov 1 1 1
Petrov Petr 3 3 3
Markov Valeriy
Petrov Petr
Sergey Petrov
Выведите фамилии и имена учащихся, не имеющих троек (а также двоек и колов).

Входные данные
Заданы сначала количество учащихся n, затем n строк, каждая из которых содержит фамилию, имя и три числа (оценки по трем предметам: математике, физике, информатике). Данные в строке разделены одним пробелом. Оценки принимают значение от 1 до 5.

Выходные данные
Необходимо вывести пары фамилия-имя по одной на строке, разделяя фамилию и имя одним пробелом. Выводить оценки не нужно. Порядок вывода должен быть таким же, как в исходных данных.
 
Примеры
Входные данные Выходные данные
1 3
Babat Anna 5 4 3
Belova Galina 4 3 5
Moroz Yaroslav 3 5 4
 
СЕКРЕТНО
Дело VOIDLINKER · Эпизод 10 из 13
Стеганограф
ИСТОЧНИК: лог сервера, проанализированный forensic-командой
ИЗ ПЕРЕХВАЧЕННОЙ ПЕРЕПИСКИ:
«Думаете, видите случайный мусор в логе? Я прячу там сообщения. Скрытый блок: чётная цифра — повторяющаяся буква — та же чётная цифра. Внутри только эта буква, никаких других символов. Найдите самый длинный такой блок. — V.»
ФОРМАЛЬНАЯ ЗАДАЧА

Определите последовательность из максимального количества идущих подряд одинаковых букв, начинающуюся и заканчивающуюся одной и той же чётной цифрой (0,2,4,6,8), не содержащую внутри других цифр и других букв, кроме повторяющейся. Длина считается вместе с обрамляющими цифрами. Если ничего нет — выведите 0.

ВХОДНЫЕ ДАННЫЕ

Одна строка из заглавных букв и цифр, до 2·105 символов.

ВЫХОДНЫЕ ДАННЫЕ

Одно целое число.

СЕКРЕТНО
Дело VOIDLINKER · Эпизод 9 из 13
Маяк PQRS
ИСТОЧНИК: радиоэфир 433 МГц / 31.10.2026 16:24
ИЗ ПЕРЕХВАЧЕННОЙ ПЕРЕПИСКИ:
«Слышишь треск на 433-й? Это мой маяк. Циклический сигнал: PQRSPQRSPQRS… Каждый символ — следующий в цикле P→Q→R→S→P… Сигнал может начаться и оборваться в любой точке цикла, но содержит хотя бы одну полную группу PQRS. Найди мой самый длинный отрезок маяка. — V.»
ФОРМАЛЬНАЯ ЗАДАЧА

Текстовый файл состоит из символов P, Q, R, S. Определите максимальную длину непрерывной подпоследовательности, в которой каждый символ — следующий в цикле P→Q→R→S→P, и содержится не менее одной полной группы PQRS. Если нет — выведите 0.

ВХОДНЫЕ ДАННЫЕ

Одна строка до 2·105 символов.

ВЫХОДНЫЕ ДАННЫЕ

Одно целое число.

На странице есть:

<ul id="list"></ul>

JavaScript выполняет:

const ul = document.getElementById('list');
ul.innerHTML = '';
const li = document.createElement('li');
li.textContent = 'Бег';
ul.appendChild(li);

Что увидит пользователь?

  1. Пустой список
  2. Список с одним пунктом «Бег»
  3. Ошибку в консоли
  4. Текст «Бег» без маркера списка

Что произойдёт при выполнении этого кода?

fetch('/api/add', {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: JSON.stringify({name: 'Бег'})
})
.then(r => r.json())
.then(data => alert(data.msg));
  1. Откроется новая страница /api/add
  2. Страница перезагрузится с новой привычкой
  3. JavaScript отправит POST с JSON на сервер, получит ответ и покажет alert
  4. Привычка добавится, но ничего не произойдёт на экране

Пользователь нажал кнопку «Добавить» в HTML-форме:

<form method="POST" action="/add">
  <input name="habit_name" value="Йога">
  <button type="submit">Добавить</button>
</form>

Как Flask получит значение «Йога» в обработчике?

  1. request.json['habit_name']
  2. request.form['habit_name']
  3. request.args['habit_name']
  4. request.get('habit_name')

В родительском чате прислали текст с контактами репетиторов. Телефоны записаны в разных форматах:

  • +7 (999) 123-45-67
  • 8 999 123 45 67
  • 89991234567
  • +7-999-123-45-67

Нужно привести все найденные в тексте телефоны к единому виду +7XXXXXXXXXX (знак плюс, цифра 7, потом 10 цифр номера).

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

Произвольный текст до 10 000 символов. Все телефоны — российские мобильные: код оператора (3 цифры), потом 3-2-2 цифры с произвольными разделителями (пробелы, дефисы, скобки).

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

Каждый телефон в формате +7XXXXXXXXXX на отдельной строке в порядке появления в тексте.

На сайте школьного кружка робототехники при регистрации нужно валидировать пароль.

Напиши программу, которая считывает одну строку — пароль — и выводит YES, если пароль удовлетворяет всем условиям, и NO иначе.

Пароль считается надёжным, если:

  • длина от 8 до 20 символов включительно;
  • состоит только из латинских букв, цифр и символов _ - ! @ #;
  • содержит хотя бы одну заглавную букву;
  • содержит хотя бы одну строчную букву;
  • содержит хотя бы одну цифру.

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

Одна строка — пароль (длиной до 100 символов).

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

Строка YES или NO.

🚀
Шаг 10: Стартап OlympMap
Сложно
Финал лета. Вася с друзьями запускают OlympMap — сервис, который показывает, какие олимпиады дают льготы в какие вузы. За неделю в чате «Абитура-2026» набрали 400+ анкет от призёров. Только формы не было — все писали в чат через символ |, и половина с опечатками. Перед запуском MVP надо понять, сколько анкет реально пригодны для базы. От этого зависит, выйдет ли проект на школьный хакатон.
Условие задачи
 

Дано N анкет. Каждая анкета — одна строка из 5 полей через символ |:

  1. ID олимпиадника: 2 заглавные латинские буквы + 4 цифры. Пример: AB1234
  2. ФИО: фамилия (русская, с заглавной буквы) + пробел + заглавная буква + точка + заглавная буква + точка. Пример: Иванов И.И.
  3. Email: имя@домен.tld, где tld — 2–4 латинские буквы.
  4. Телефон: ровно +7 и 10 цифр. Пример: +79991234567
  5. Балл: целое число от 1 до 100.

Анкета считается валидной, если ВСЕ пять полей соответствуют формату.

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

В первой строке — целое число N. Далее N строк с анкетами.

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

Одно целое число — количество валидных анкет.

Подсказка: Используй re.fullmatch() — в отличие от match, она требует, чтобы шаблон совпал с всей строкой, а не только с её началом.
🔒
Шаг 9: Мама строго сказала
Сложно
Вася ведёт телеграм-канал «Дневник абитуриента» и хочет опубликовать пост: «Куда поступили мои одноклассники». Но мама услышала и сказала строго: «Никаких ФИО, замени всё на звёздочки, иначе телефон отберу». Маму лучше слушать. Особенно когда речь о телефоне.
Условие задачи
 

Замени все ФИО в тексте на ***.

ФИО имеет формат: фамилия с заглавной буквы (кириллица), пробел, заглавная буква, точка, заглавная буква, точка. Например, Иванов И.И., Петрова А.С..

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

Одна строка текста.

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

Та же строка, в которой все ФИО заменены на ***.

Подсказка: re.sub(r"[А-ЯЁ][а-яё]+\s[А-ЯЁ]\.[А-ЯЁ]\.", "***", text). Точки нужно экранировать!
🌐
Шаг 7: Где этот сайт МФТИ?!
Средне
Вася добавил в закладки сайты десятка вузов: МФТИ, МГУ, ВШЭ, ИТМО, Бауманка… Теперь это каша из https://www.mipt.ru/abitur, http://www.hse.ru/admissions и так далее. Хочется компактный список — только домены, без всех этих https и www.
Условие задачи
 

Извлеки только доменное имя без префикса www. и без пути.

Формат URL: http:// или https://, затем опционально www., затем доменное имя, затем опционально / и путь.

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

Одна строка текста с URL-ами.

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

Доменные имена без www., по одному на строке.

Подсказка: Группа захвата: https?://(?:www\.)?([a-zA-Z0-9.]+?)(?=[/\s]|$). (?:…) — группа без захвата, (?=…) — lookahead.
🎯
Шаг 6: Сколько у меня баллов в сумме?!
Средне
Вася сдал четыре ЕГЭ. Результаты приходили в разных письмах и в разных форматах. Уже пять раз Вася пытался сложить сумму на калькуляторе — и пять раз получилось разное. Что-то здесь не так. Помоги ему наконец-то узнать честную сумму баллов.
Условие задачи
 

Извлеки все числовые значения баллов из текста и выведи их сумму. Балл — целое число от 1 до 100. Гарантируется, что других чисел в тексте нет.

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

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

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

Одно целое число — сумма всех найденных баллов. Если баллов нет — вывести 0.

Подсказка: re.findall(r"\d+", text) вернёт список чисел в виде строк. Останется только сложить через sum(int(x) for x in …).
📞
Шаг 5: Звонок в приёмную
Средне
Вася собрал телефоны приёмных комиссий 12 вузов с их сайтов. Каждый сайт пишет номер по-своему: где-то +7(495)..., где-то 8-495-..., где-то вообще со скобками вокруг кода. У Васи и так дрожат руки перед звонком — хочется хоть какой-то порядок. Приведи все номера к виду +7XXXXXXXXXX.
Условие задачи
 

Извлеки все российские мобильные номера и приведи их к формату +7XXXXXXXXXX (плюс, семёрка, 10 цифр без разделителей).

Возможные форматы:

  • +7(495)123-45-67
  • 8(495)123-45-67
  • +7-495-123-45-67
  • 8-495-123-45-67

Все номера: +7 или 8, потом код (3 цифры), потом 7 цифр. Пробелов внутри номера нет.

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

Одна строка текста.

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

Все номера в формате +7XXXXXXXXXX, по одному на строке.

Подсказка: Найди подстроки телефонов, потом re.sub(r"\D", "", s) чистит всё нецифровое. Если первая цифра 8 — замени на 7.
📅
Шаг 4: Когда там апелляция?!
Средне
Результаты ЕГЭ опубликованы! Вася в шоке от русского: ожидал 90, получил 78. Решил подавать на апелляцию, но даты приходят отовсюду в разном виде: из чата класса — 15.06.2025, от классрука — 15/06/2025, с официального сайта — 15-06-2025. У Васи в голове путаница, хочется привести всё к одному виду ГГГГ-ММ-ДД, как у нормальных айтишников.
Условие задачи
 

Извлеки все даты из текста и выведи их в формате ГГГГ-ММ-ДД.

Формат входных дат: ровно 2 цифры дня, разделитель (., / или -), 2 цифры месяца, тот же или другой разделитель, 4 цифры года.

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

Одна строка текста.

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

Все найденные даты в формате ГГГГ-ММ-ДД, по одной на строке.

Подсказка: Группы захвата: (\d{2})[./-](\d{2})[./-](\d{4}). Класс [./-] покрывает все три разделителя сразу.
🪪
Шаг 3: СНИЛС из личного кабинета
Просто
Вася регистрируется в личном кабинете ФИПИ. Там просят ввести СНИЛС в формате XXX-XXX-XXX YY. Вася в панике скопировал в один файл всё, что нашёл у себя в документах: паспорт, аттестат, прививочный сертификат и почему-то рецепт от стоматолога. Найди в этом хаосе валидные СНИЛСы.
Условие задачи
 

СНИЛС имеет формат: 3 цифры, дефис, 3 цифры, дефис, 3 цифры, пробел, 2 цифры. Например, 123-456-789 12.

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

Одна строка текста.

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

Все найденные валидные СНИЛСы, по одному на строке.

Подсказка: \b\d{3}-\d{3}-\d{3} \d{2}\b. Внутри СНИЛС есть пробел — будь внимателен.
Поделиться
Класснуть