№15 · решено
Три отрезка, наибольшая длина A
На числовой прямой даны три отрезка: B = [32; 425], C = [130; 480] и D = [290; 575]. Укажите наибольшую возможную длину такого отрезка A, для которого логическое выражение ((x ∈ C) → ¬(x ∈ D)) ∧ (x ∈ A) ∧ ¬(x ∈ B) ложно (т.е. принимает значение 0) при любом значении переменной x.
Источник: ФИПИ (Основная), № 31164
Ответвпиши то, что вывела программа
Показать разбор
- Опиши каждый отрезок в функции f(x) двойным неравенством, а A как a1 <= x <= a2.
- Перепиши формулу: → это <=, ≡ это ==, ¬ это not, расставь скобки.
- Составь опасные точки: концы отрезков и точки на 0.1 левее и правее.
- Перебирай a1 и a2 из этих точек при a2 >= a1. Формула должна быть ложной, поэтому проверяй f(x) == 0 во всех точках.
- Нужна наибольшая длина: возьми max от a2 - a1 и округли через round.
def f(x):
B = 32 <= x <= 425
C = 130 <= x <= 480
D = 290 <= x <= 575
A = a1 <= x <= a2
return (C <= (not D)) and A and (not B)
d = [y for x in (32, 425, 130, 480, 290, 575) for y in (x, x - 0.1, x + 0.1)]
n = []
for a1 in d:
for a2 in d:
if a2 >= a1 and all(f(x) == 0 for x in d):
n.append(a2 - a1)
print(round(max(n)))