Для какого наибольшего целого неотрицательного числа A логическое выражение
(x + y ≤ 33) ∨ (y ≤ x + 9) ∨ (y ≥ A)
тождественно истинно (т. е. принимает значение 1) при любых целых положительных x и y?
Решение
Шаг 1. Перебор A от большего к меньшему
for A in range(100, -1, -1):
f = True
for x in range(1, 100):
for y in range(1, 100):
if (x + y > 33) and (y > x + 9) and (y < A):
f = False
if f:
print(A)
break
Ищем наибольшее A, при котором формула истинна для всех пар (x, y).
Шаг 2. Проверка всех пар (x, y)
for x in range(1, 100):
for y in range(1, 100):
if (x + y > 33) and (y > x + 9) and (y < A):
f = False
Для каждого A ставим флаг «подходит» и перебираем пары x, y.
Если условие нарушения верно: (x + y > 33) and (y > x + 9) and (y < A) — исходная дизъюнкция ложна, флаг сбрасываем.
Шаг 3. Первое подходящее A — ответ
if f:
print(A)
break
Если после перебора флаг остался истинным — текущее A подходит; выводим и останавливаемся. Ответ: 22.
Решение
Шаг 1. Перебор A от большего к меньшему
for A in range(100, -1, -1):
f = True
for x in range(1, 100):
for y in range(1, 100):
if (x + y > 33) and (y > x + 9) and (y < A):
f = False
if f:
print(A)
break
Ищем наибольшее A, при котором формула истинна для всех пар (x, y).
Шаг 2. Проверка всех пар (x, y)
for x in range(1, 100):
for y in range(1, 100):
if (x + y > 33) and (y > x + 9) and (y < A):
f = False
Для каждого A ставим флаг «подходит» и перебираем пары x, y.
Если условие нарушения верно: (x + y > 33) and (y > x + 9) and (y < A) — исходная дизъюнкция ложна, флаг сбрасываем.
Шаг 3. Первое подходящее A — ответ
if f:
print(A)
break
Если после перебора флаг остался истинным — текущее A подходит; выводим и останавливаемся. Ответ: 22.
Решение
Шаг 1. Перебор A от большего к меньшему
for A in range(100, -1, -1):
f = True
for x in range(1, 100):
for y in range(1, 100):
if (x + y > 33) and (y > x + 9) and (y < A):
f = False
if f:
print(A)
break
Ищем наибольшее A, при котором формула истинна для всех пар (x, y).
Шаг 2. Проверка всех пар (x, y)
for x in range(1, 100):
for y in range(1, 100):
if (x + y > 33) and (y > x + 9) and (y < A):
f = False
Для каждого A ставим флаг «подходит» и перебираем пары x, y.
Если условие нарушения верно: (x + y > 33) and (y > x + 9) and (y < A) — исходная дизъюнкция ложна, флаг сбрасываем.
Шаг 3. Первое подходящее A — ответ
if f:
print(A)
break
Если после перебора флаг остался истинным — текущее A подходит; выводим и останавливаемся. Ответ: 22.