№15 · решено
Отрезки P и Q
На числовой прямой даны два отрезка: P = [25; 64] и Q = [40; 115]. Укажите наименьшую возможную длину такого отрезка A, что логическое выражение (x ∈ P) → (((x ∈ Q) ∧ ¬(x ∈ A)) → ¬(x ∈ P)) истинно (т.е. принимает значение 1) при любом значении переменной x.
Источник: ФИПИ (Демо), № 23755
Ответвпиши то, что вывела программа
Показать разбор
- Опиши каждый отрезок в функции f(x) двойным неравенством, а A как a1 <= x <= a2.
- Перепиши формулу: → это <=, ≡ это ==, ¬ это not, расставь скобки.
- Составь опасные точки: концы отрезков и точки на 0.1 левее и правее.
- Перебирай a1 и a2 из этих точек при a2 >= a1. Формула должна быть истинной во всех точках.
- Нужна наименьшая длина: возьми min от a2 - a1 и округли через round.
def f(x):
P = 25 <= x <= 64
Q = 40 <= x <= 115
A = a1 <= x <= a2
return P <= ((Q and (not A)) <= (not P))
d = [y for x in (25, 40, 64, 115) 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) for x in d):
n.append(a2 - a1)
print(round(min(n)))