Ах, ЕГЭ по информатике, этот загадочный зверь с 15-м заданием, которое всегда подкидывает сюрпризы, словно фокусник на детском празднике.
Мы уже почти разобрались со всеми типами этих заданий — ну, почти как тот студент, который выучил все билеты к экзамену, кроме одного. И вот он — самый молодой и таинственный тип задания пятнадцатого номера! Появился он в сборнике С.С. Крылова за 2026 год, и никто толком не знает: то ли это эксперимент такой для будущих поколений гениев-программистов, то ли просто шутка такая от преподавателей.
Но мы не из пугливых — возьмёмся за него программным способом и разберём на примерах.
В чём же его соль? Встречайте: «множество всех натуральных делителей».
Если вы подумали «ой-ёй», то расслабьтесь — это не так страшно, как кажется. Представьте себе число — скажем, ваше любимое число (у меня это 42), а теперь представьте всех его друзей-делителей: те числа, которые без остатка делят его на частицы счастья. Вот только в этих задачах нам нужно работать с такими друзьями без единицы и самого числа — они как те гости на вечеринке, которые приходят без приглашения и мешают веселью.
Задание звучит примерно так: есть отрезок A = [3; 60], множество B — делители числа 177 (кроме единицы и 177), а множество C — делители какого-то загадочного числа y (тоже без единицы и самого y).
Нужно найти самое большое y такое, чтобы логическое выражение (x ∈ C) → ((x ∈ A) ∧ ¬(x ∈ B)) было истинным для любого x. Звучит как заклинание из Гарри Поттера? Не бойтесь! Тут главное понять логику.
Чтобы не запутаться в дебрях логических операторов Python (которые иногда напоминают мне разговоры с моим котом: вроде бы что-то понятно, но смысл ускользает), начнём с простого.
Для начала определим функции проверки принадлежности чисел к множествам A и B. Например, чтобы проверить является ли x делителем 177 (без единицы и самой 177), достаточно убедиться: остаток от деления равен нулю, а само число не равно ни 1 ни 177. Как говорил мой дедушка-программист: «Если число делится без остатка – значит оно твой друг».
А если нет – значит просто знакомый из соседнего подъезда.
Далее придётся перебрать все возможные y от 2 до десяти тысяч (да-да, именно столько мы готовы потратить времени на эту задачу). Здесь пригодится стандартный приём перебора делителей через проверку чисел до квадратного корня из y — иначе можно просидеть у компьютера до следующего ЕГЭ!
И вот тут начинается магия Python: списочные включения превращают скучную работу в маленький праздник кода.
Функция all() проверяет истинность нашего выражения для каждого x – будто строгий учитель проверяет домашнюю работу сразу у всех учеников класса.
В итоге программа выдаёт число 2809 – наш герой дня! Кто бы мог подумать?
А я уж начал подозревать что ответ будет что-то типа «42» или «7», но математика решила сыграть со мной злую шутку.
Кстати говоря, если задуматься о природе таких задачек – они напоминают мне анекдот про программиста:
«Программист приходит к врачу.
– Доктор, у меня проблема – я всё время думаю о делителях.
– Не волнуйтесь, это нормально.
– Но их так много!
– Тогда займитесь оптимизацией.»
Вот именно оптимизация помогает нам решать такие задачи быстро и эффективно.
Ну а пока мы наслаждаемся победой над загадочным пятим типом задания пятнадцатого номера ЕГЭ по информатике, стоит помнить одну мудрость из мира программирования: если решение кажется слишком сложным – возможно вы просто забыли про функцию all() или списочные включения.
Задание 15 ЕГЭ по информатике действительно может показаться сложным из-за своей необычной формулировки и требований работы с множествами делителей, исключая единицу и само число. Однако, если внимательно разобраться с логикой условия и применить программный подход, то решение становится вполне доступным и даже увлекательным. Важно помнить, что такие задачи не только проверяют знания, но и развивают умение мыслить нестандартно и работать с абстрактными понятиями.