Найти в Дзене

Новая задача №15 из ЕГЭ по информатике 2026. Пугающий внешний вид и простое решение прототипа на логику

Доброго времени суток, дорогие читатели! Наткнулся на интересную формулировку задачи №15 в ЕГЭ по информатике в сборнике Крылова. Все мы знаем, что Сергей Крылов - руководитель комиссии по разработке КИМ по информатике и если он что-то предлагает, то это не просто так. На первый взгляд, задача на отрезки. Но тут и делители, и множества, ну и, так как это задача №15 - логическое выражение. Не хочу рассуждать аналитически - заставим компьютер перебирать. Начнем с кода, потом объясню def f(x, c, a, b): return (x in c) <= ((x in a) and (not(x in b))) 👆Объявляем функцию, которая возвращает логическое значение (True или False) в зависимости от входных параметров x, c, a, b. То есть, если x принадлежит множеству с, то x принадлежит отрезку а и x не принадлежит множеству b. a = [x for x in range(3, 61)] b = [x for x in range(2, 177) if 177 % x==0] 👆"Записываем дано". Генератором создаем два списка: Множество значений отрезка а и множество числовых значений - делителей числа 177 (их там всего

Доброго времени суток, дорогие читатели! Наткнулся на интересную формулировку задачи №15 в ЕГЭ по информатике в сборнике Крылова. Все мы знаем, что Сергей Крылов - руководитель комиссии по разработке КИМ по информатике и если он что-то предлагает, то это не просто так.

На первый взгляд, задача на отрезки. Но тут и делители, и множества, ну и, так как это задача №15 - логическое выражение. Не хочу рассуждать аналитически - заставим компьютер перебирать. Начнем с кода, потом объясню

-2

По порядку:

def f(x, c, a, b): return (x in c) <= ((x in a) and (not(x in b)))

👆Объявляем функцию, которая возвращает логическое значение (True или False) в зависимости от входных параметров x, c, a, b. То есть, если x принадлежит множеству с, то x принадлежит отрезку а и x не принадлежит множеству b.

a = [x for x in range(3, 61)]
b = [x for x in range(2, 177) if 177 % x==0]

👆"Записываем дано". Генератором создаем два списка: Множество значений отрезка а и множество числовых значений - делителей числа 177 (их там всего 2 числа будет - можете вывести, проверить)

for y in range(5555, 1, -1):
....c = [x for x in range(2, y) if y % x==0]

👆Организуем перебор искомого y от большего к меньшему с шагом -1, чтобы потом отсечь первое, что удовлетворит условию. Строим множество с, состоящее из делителей этого числа y в зависимости от подставленного y из диапазона от 2 до y (не включительно)

....if len(c) and all(f(x,c,a,b)==1 for x in range(1, 5555)):
........print(y)
........break

Если длина с не нулевая и все подставленные значения x из диапазона до 5555 (можно взять и больше) дают истину в качестве значения функции f, то этот y нам подошел - выводим его и прекращаем перебор.

Привожу этот код ниже. Но все отступы сбились - публикую его ниже для быстрой копипасты.

#Сборник Крылова, в1

def f(x, c, a, b): return (x in c) <= ((x in a) and (not(x in b)))

a = [x for x in range(3, 61)]

b = [x for x in range(2, 177) if 177 % x==0]

for y in range(5555, 1, -1):

c = [x for x in range(2, y) if y % x==0]

if c and all(f(x, c, a, b)==1 for x in range(1, 5555)):

print(y)

break

Также привожу решение другого формата этой же задачи. Ответ 2809.

-3

Если статья оказалась полезной, делайте 👍