Подтема 3 из 6
Координатная плоскость
Формулы с x и y: в каких точках всё решает A, где выражение наибольшее, строгие знаки и A множителем.
Точки, где всё решает A
Что меняется, когда в формуле две переменные — x и y? Например:
«Для какого наименьшего целого A формула (x ≥ 12) ∨ (y > 5) ∨ (A > x · y) тождественно истинна, то есть принимает значение 1 при любых натуральных x и y?»
Пара (x; y) — точка на клетчатой плоскости. Точки, где ложны все части без A, образуют область, и в каждой её точке часть с A обязана быть истинной.
Части без A ложны, когда x < 12 и y ≤ 5. Для натуральных чисел это x от 1 до 11 и y от 1 до 5 — прямоугольник из 55 точек. В каждой из них нужно A > x · y.
A должно быть больше x · y во всех этих точках — значит, больше самого большого произведения. Оба числа положительные, поэтому произведение наибольшее при самых больших x и y: 11 · 5 = 55. Нужно A > 55, наименьшее целое A = 56.
Тонкости:натуральные или неотрицательные
Если x и y — неотрицательные целые, к точкам добавляются x = 0 и y = 0. Здесь ответ не меняется: произведение с нулём равно 0. Но в выражениях вроде x − y такие точки могут стать самыми трудными — всегда смотри, с какого числа начинаются x и y.
Не прямоугольная область
Как найти наибольшее значение, если область — не прямоугольник? Возьмём формулу (2x + 3y ≥ 30) ∨ (x + 2y < A) и найдём наименьшее целое A для натуральных x и y.
Перебирают x и для каждого берут самый большой допустимый y: выражение, которое растёт вместе с y, наибольшее на верхнем краю области.
Всё решает A в точках, где 2x + 3y < 30. Для каждого x найдём самый большой y и значение x + 2y:
| x | Самый большой y | x + 2y |
|---|---|---|
| 1 | 9: 2 + 27 = 29 | 19 |
| 2 | 8: 4 + 24 = 28 | 18 |
| 3 | 7: 6 + 21 = 27 | 17 |
| 4 | 7: 8 + 21 = 29 | 18 |
| 5 | 6: 10 + 18 = 28 | 17 |
| … | y дальше только уменьшается | не больше 17 |
Выгоднее маленький x и большой y: в x + 2y игрек идёт с множителем 2. Наибольшее значение 19, нужно 19 < A — наименьшее A = 20.
Строгие знаки
Почему ответ часто на единицу отличается от «очевидного»?
Для целых чисел строгий знак сдвигает границу на единицу: x < 12 — это x ≤ 11, а A > 30 — это A ≥ 31. Нестрогий знак границу оставляет: x ≥ 12 включает и само 12.
Пример: (y > 10) ∨ (x > y) ∨ (2x + y < A), x и y — натуральные, нужно наименьшее A. Всё решает A, когда y ≤ 10 и x ≤ y — точки не выше 10 и не правее диагонали x = y.
Наибольшее 2x + y — в точке (10; 10): 30. Знак строгий: нужно 30 < A, поэтому A = 30 не подходит — в точке (10; 10) формула ложна. Наименьшее A = 31.
Наибольшее A
Что, если A должно быть меньше выражения? Пример: (x ≥ 8) ∨ (A < x · y) ∨ (y ≤ 7), x и y натуральные, нужно наибольшее A.
Тогда A должно быть меньше выражения во всех точках области — и ищут наименьшее значение выражения.
Всё решает A, когда x ≤ 7 и y ≥ 8. Сверху область не ограничена, но это не мешает: наименьшее x · y — в точке (1; 8), оно равно 8. Нужно A < 8, наибольшее A = 7.
Сравни с первой задачей подтемы: там A было больше x · y, и всё решало самое большое произведение. Здесь A меньше — решает самое маленькое.
A множителем
Как быть, если A стоит множителем при переменной? Пример: (y ≥ 10) ∨ (A · x ≥ 2y + 5), x и y натуральные, нужно наименьшее целое A.
Сначала выясняют знак A, потом ищут самую трудную точку: где левая часть меньше всего, а правая — больше всего.
Всё решает A, когда y ≤ 9, а x — любое натуральное. Если A ≤ 0, то A · x ≤ 0, а 2y + 5 положительно — формула ложна. Значит, A > 0, и тогда A · x меньше всего при x = 1. Правая часть больше всего при y = 9: 2 · 9 + 5 = 23.
Нужно A · 1 ≥ 23, наименьшее A = 23. Проверка: при A = 23 и любом x ≥ 1 левая часть не меньше 23, а правая при y ≤ 9 не больше 23.
Программой
Как решить такую задачу программой?
Так же, как задачу темы, только перебирают пары x и y — двумя циклами внутри . Первая задача подтемы:
def f(x, y, A): return x >= 12 or y > 5 or A > x * y for A in range(-100, 1000): if all(f(x, y, A) for x in range(1, 100) for y in range(1, 100)): print(A) breakx и y — до 99 с запасом: все числа условия меньше 12. A перебираем начиная с отрицательных: заранее неизвестно, что ответ больше нуля. Нужно наименьшее A, поэтому печатаем первое подходящее и останавливаемся — .
Тонкости:область без верхней границы
Программа проверяет только точки из диапазона. В задаче с A · x переменная x не ограничена, но самая трудная точка — x = 1, и она в диапазоне есть. Если область уходит в бесконечность, сначала убедись, что самая трудная точка внутри диапазона.
Итого
- Точкапара (x; y) на клетчатой плоскости
- Областьточки, где все части без A ложны
- A больше выражениянаибольшее значение в области — наименьшее A
- A меньше выражениянаименьшее значение в области — наибольшее A
- Не прямоугольникдля каждого x — самый большой y
- Строгий знакграница сдвигается на 1
- Pythonдва цикла внутри all, A с запасом в обе стороны
Проверьте себя
Ответь сначала сам, потом открой ответ.
ОтветСкрыть ответ
ОтветСкрыть ответ
ОтветСкрыть ответ
ОтветСкрыть ответ
ОтветСкрыть ответ
Практика
Для проверки ответов нужен JavaScript. Условия, подсказки и решения доступны ниже.
Наименьшее A: самый большой y
Для какого наименьшего целого числа A формула (x + y ≥ 18) ∨ (x < y) ∨ (y < A) тождественно истинна при любых натуральных x и y?
Введите число.
Подсказка
Всё решает A при x + y ≤ 17 и x ≥ y. Найди там самый большой y.
Решение
Части без A ложны, когда x + y ≤ 17 и y ≤ x. Тогда 2y ≤ x + y ≤ 17, то есть y ≤ 8; y = 8 достигается при x = 8 или 9. Нужно y < A для всех таких точек: 8 < A, наименьшее A = 9.
def f(x, y, A): return x + y >= 18 or x < y or y < A for A in range(-100, 1000): if all(f(x, y, A) for x in range(1, 100) for y in range(1, 100)): print(A) breakОтвет: 9
Наименьшее A: наибольшее x + y
Для какого наименьшего целого числа A формула (3x + 2y ≥ 24) ∨ (x + y < A) тождественно истинна при любых натуральных x и y?
Введите число.
Подсказка
Для каждого x возьми самый большой y, при котором 3x + 2y < 24.
Решение
Всё решает A при 3x + 2y < 24. Выгоднее маленький x: при x = 1 самый большой y = 10 (3 + 20 = 23), x + y = 11. При x = 2 — y = 8, сумма 10, дальше меньше. Наибольшее x + y = 11, нужно 11 < A — наименьшее A = 12.
def f(x, y, A): return 3 * x + 2 * y >= 24 or x + y < A for A in range(-100, 1000): if all(f(x, y, A) for x in range(1, 100) for y in range(1, 100)): print(A) breakОтвет: 12
Наименьшее A: 3x + y ≥ 33
Укажи наименьшее целое значение A, при котором выражение (3x + y ≥ 33) ∨ (x + y < A) истинно при любых натуральных значениях x и y.
Введите число.
Подсказка
Строгий знак: из 3x + y < 33 для целых чисел следует 3x + y ≤ 32.
Решение
Всё решает A при 3x + y ≤ 32. Сумма x + y наибольшая при x = 1: y ≤ 29, x + y = 30. Нужно 30 < A — наименьшее целое A = 31; при A = 30 точка (1; 29) нарушает формулу.
def f(x, y, A): return 3 * x + y >= 33 or x + y < A for A in range(-100, 1000): if all(f(x, y, A) for x in range(1, 100) for y in range(1, 100)): print(A) breakОтвет: 31
Наибольшее A: xy < 40
Для какого наибольшего натурального числа A формула (x · y < 40) ∨ (x ≥ A) ∨ (y ≥ A) тождественно истинна при любых натуральных x и y?
Введите число.
Подсказка
При x < A и y < A самое большое произведение — (A − 1) · (A − 1).
Решение
Всё решает A при x ≤ A − 1 и y ≤ A − 1: там нужно x · y < 40. Самое большое произведение — (A − 1)². При A = 7 это 36 < 40 — подходит. При A = 8 точка (7; 7) даёт 49 — формула ложна. Ответ — 7.
def f(x, y, A): return x * y < 40 or x >= A or y >= A answer = Nonefor A in range(1, 1000): if all(f(x, y, A) for x in range(1, 100) for y in range(1, 100)): answer = Aprint(answer)Ответ: 7
Наибольшее A: две части через И
Для какого наибольшего целого числа A формула ((x ≤ 5) → (x · x ≤ A)) ∧ ((y · y ≤ A) → (y ≤ 5)) тождественно истинна при любых неотрицательных целых x и y?
Введите число.
Подсказка
Обе части И должны быть истинны: первая даёт нижнюю границу A, вторая — верхнюю.
Решение
Первая часть: при x от 0 до 5 нужно x · x ≤ A, то есть A ≥ 25. Вторая ложна, если y ≥ 6, а y · y ≤ A; самый маленький такой квадрат — 36, поэтому нужно 36 > A. Подходят A от 25 до 35, наибольшее — 35.
def imp(p, q): return (not p) or q def f(x, y, A): return imp(x <= 5, x * x <= A) and imp(y * y <= A, y <= 5) answer = Nonefor A in range(-100, 1000): if all(f(x, y, A) for x in range(0, 100) for y in range(0, 100)): answer = Aprint(answer)Ответ: 35
A множителем
Для какого наименьшего целого числа A формула (y ≥ 8) ∨ (A · x ≥ 3y + 4) тождественно истинна при любых натуральных x и y?
Введите число.
Подсказка
Сначала выясни знак A, потом найди самую трудную точку.
Решение
Всё решает A при y ≤ 7. Если A ≤ 0, левая часть не больше 0, а правая положительна — формула ложна. При A > 0 левая часть меньше всего при x = 1, правая больше всего при y = 7: 3 · 7 + 4 = 25. Нужно A ≥ 25.
def f(x, y, A): return y >= 8 or A * x >= 3 * y + 4 for A in range(-100, 1000): if all(f(x, y, A) for x in range(1, 100) for y in range(1, 100)): print(A) breakОтвет: 25