Найти в Дзене
659 подписчиков

Задача №15 ЕГЭ по информатике по мотивам сборника Крылова 2026

**********************************************************************************************************
(№ 8409) (И. Карпачёв) На числовой прямой дан отрезок A = [4; 82];
B – множество всех натуральных делителей числа 211, отличных от единицы и от самого числа 211;
C – множество всех натуральных делителей некоторого натурального числа y,
отличных от единицы и от самого числа y (число y таково, что множество C непустое).
Укажите значение y, имеющее максимальное количество делителей, для которого выражение:
((x ∈ B) ∨ ¬(x ∈ A)) → ¬(x ∈ C) тождественно истинно
(т.е. принимает значение 1 при любом натуральном значении переменной х)?
**********************************************************************************************************

Решение на современном pascalabc.net

## uses school;
function f(x,y:integer):boolean;
begin
 var a:=x in range(4,82);
 var b:=x in 211.divisors?[1:^1];
 var c:=x in y.divisors?[1:^1];
 if not y.IsPrime then
  result:=(b or not a)<=(not c)
 else
  result:=false;
end;

(1..10000)
.Where(y -> ((1..1000).All(x->f(x,y))))
.Select(y->(y, y.divisors.count))
.MaxBy(y->y[1])
.Print;

Решение на python:

def allDivs( x ):
 divs = []
 d = 2
 while d*d <= x:
  if x % d == 0:
   divs.append( d )
   if x // d > d:
   divs.append( x//d )
  d += 1
 return sorted(divs)

def f(x,y):
 a = 4<=x<=82
 b = x in allDivs(211)
 c = x in allDivs(y)
 if len(allDivs(y))>0:
  return (b or (not a)) <=(not c)

q = []
for y in range(1,10000):
 if all(f(x,y) for x in range(1,1000)):
  q+=[(y,len(allDivs(y)))]
q.sort(key = lambda x: (x[1]))
print(q[-1])

1 минута