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