Тема 15. Алгебра логики – преобразование логических выражений

15.03 Неравенства

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела алгебра логики – преобразование логических выражений
Решаем задачи

Ошибка.
Попробуйте повторить позже

Задача 1#5784

Для какого наибольшего целого неотрицательного числа A  выражение

(69 ⁄= y + 2x ) ∨ (A < x) ∨ (A < y)

тождественно истинно (т.е. принимает значение 1 при любом неотрицательном целом значении переменной x  и y)?

Показать ответ и решение

Решение руками:

Инвертируем известную часть:

69 = y + 2x

Пусть y =  1,x = 34  . Чтобы выполнялось условие A  < y  , нужно взять A = 0  , в таком случае условие будет выполняться и для Y  , и для X  .

Если мы возьмём пару y = 3,x = 33  , то теперь наибольшее значение A  уже будет равно 2.

Соответственно, чем больше мы будем брать Y  , тем большее значение A  можно взять.

Но, когда значение Y  станет больше, чем X  , то тогда уже придётся ориентироваться в первую очередь на условие для X  .

Следовательно, чтобы найти наибольшее А, нам нужна такая пара Y,X  , при которой будет выполняться Y  = X  .

Это будет пара Y =  23,X  = 23  , и при таких значениях переменных наибольшее A  будет равно 22.

Решение программой:

for a in range(0, 1000):
    c = 0  # Переменная-флаг
    for x in range(1, 1000):
        for y in range(1, 1000):
            if ((y + 2*x != 69) or (a < x) or (a < y)) == False:
                c = 1
                break
        if c == 1:
            break
    if c == 0:
        print(a)

Ответ: 22

Ошибка.
Попробуйте повторить позже

Задача 2#6482

Каково наибольшее целое X,  при котором истинно высказывание:
(50 < X ⋅ X ) → (50 > (X +  1) ⋅ (X + 1))?
 

Показать ответ и решение

Решение руками

Заметим, что логическое следование ложно только в случае 1 →  0  . Значит, нужно понять, при каких x впервые наступит такое условие (и взять x меньше, но максимальный).

Такое условие получается при x = 8: (50 < 64) → (50 >  81)  .

Возьмем x = 7: (50 < 49) →  (50 > 64)  . Получили следование из 0 в 0, что дает истину. Значит, наибольший x = 7.

Решение прогой

for x in range(1000):
    if (50 < x * x) <= (50 > (x + 1) * (x + 1)):
        print(x)

Ответ: 7

Ошибка.
Попробуйте повторить позже

Задача 3#6484

Для какого наибольшего целого неотрицательного числа A  выражение
(99 ⁄= y + 2x) ∨ (A < x) ∨ (A < y)
тождественно истинно (т.е. принимает значение 1 при любом неотрицательном целом значении переменных x  и y)?

Показать ответ и решение

Решение руками:

Инвертируем известную часть:

99 = y + 2x

Пусть y =  1,x = 49  . Чтобы выполнялось условие A  < y  , нужно взять A = 0  , в таком случае условие будет выполняться и для Y  , и для X  .

Если мы возьмём пару y = 3,x = 48  , то теперь наибольшее значение A  уже будет равно 2.

Соответственно, чем больше мы будем брать Y  , тем большее значение A  можно взять.

Но, когда значение Y  станет больше, чем X  , то тогда уже придётся ориентироваться в первую очередь на условие для X  .

Следовательно, чтобы найти наибольшее А, нам нужна такая пара Y,X  , при которой будет выполняться Y  = X  .

Это будет пара Y =  33,X  = 33  , и при таких значениях переменных наибольшее A  будет равно 32.

Решение программой:

def f(a):
    for x in range(1000):
        for y in range(1000):
            if not((99 != y + 2 * x) or (a < x) or (a < y)):
                return False
    return True

for a in range(1000):
    if f(a):
        print(a)

Ответ: 32

Ошибка.
Попробуйте повторить позже

Задача 4#16307

Для какого наименьшего целого неотрицательного числа A  выражение

(69 < y +2x) ∨(A > x)∨ (A > y)

тождественно истинно (т.е. принимает значение 1 при любых неотрицательных целых значениях переменных x  и y  )?

Показать ответ и решение

Решение 1

def f(a):
    for x in range(1, 1000):
        for y in range(1, 1000):
            if ((69 < y + 2 * x) or (a > x) or (a > y)) == False:
                return False
    return True

for a in range(1000):
    if f(a):
        print(a)
        break

Решение 2

Инвертируем известную часть:

69 ≥ y+ 2x

Пусть y = 1,x = 34  . Чтобы выполнялось условие A > y  , нужно взять A = 2  , в таком случае условие будет выполняться и для Y  , правда не будет выполняться для X  .

Если мы возьмём пару y = 3,x = 33  , то теперь наименьшее значение A  уже будет равно 4.

Соответственно, чем больше мы будем брать Y  , тем больше будет наименьшее значение для A  .

Но, когда значение Y  станет больше, чем X  , то тогда уже придётся ориентироваться в первую очередь на условие для X  , т.к. X  будет меньше чем Y  , и нам хватит меньшего значения для A  , чтобы всё выражение было истиной.

Следовательно, чтобы найти наименьшее А, нам нужна такая пара Y,X  , при которой будет выполняться Y = X  .

Это будет пара Y = 23,X = 23  , и при таких значениях переменных наименьшее A  будет равно 24.

Ответ: 24

Ошибка.
Попробуйте повторить позже

Задача 5#16308

Для какого наибольшего целого неотрицательного числа A  выражение

(x + 3y > A )∨ (x < 18)∨ (y < 33)

тождественно истинно при любых целых неотрицательных x  и y?

Показать ответ и решение

Решение 1 (руками)

Инвертируем известную часть:

(x ≥ 18) ∧(y ≥ 33)

Это выражение истино (а исходное соответственно ложно) при x ≥ 18  и y ≥ 33  одновременно. Неизвестная часть x + 3y > A  говорит, что сумма x и 3y должна быть больше чем A, тогда возьмем максимальные x и y из известной части, так как они же будут являться минимальными значениями при которых неизвестная часть должна давать истину. Подставим x = 18  и y = 33  , получим 18 + 99 = 117 > A  , отсюда A = 116  .

Решение 2 (прогой)

def f(a):
    for x in range(1, 1000):
        for y in range(1, 1000):
            if not ((x + 3 * y > a) or (x < 18) or (y < 33)):
                return False
    return True


for a in range(1000, 0, -1):
    if f(a):
        print(a)
        break

Ответ: 116

Ошибка.
Попробуйте повторить позже

Задача 6#16309

Для какого наибольшего целого неотрицательного числа A  выражение

              --------
(3x+ 9y ≥ A)∨ (x > 20) ∨(y < 10)

тождественно истинно при любых целых неотрицательных x  и y?

Показать ответ и решение

Решение руками

Инвертируем известную часть:

(x > 20) ∨(y ≥ 10)

Это выражение истино (а исходное соответственно ложно) при x > 20  и y ≥ 10  одновременно. Неизвестная часть 3x + 9y ≥ A  говорит, что сумма 3x и 9y должна быть больше или равна чем A, тогда возьмем максимальные x и y из известной части, так как они же будут являться минимальными значениями при которых неизвестная часть должна давать истину. Подставим x = 21  и y = 10  , получим 63 + 90 = 153 ≥ A  , отсюда A = 153  .

Решение программой

def f(a):
    for x in range(1, 1000):
        for y in range(1, 1000):
            if not ((3 * x + 9 * y >= a) or not (x > 20) or (y < 10)):
                return False
    return True


for a in range(1000, 0, -1):
    if f(a):
        print(a)
        break

Ответ: 153

Ошибка.
Попробуйте повторить позже

Задача 7#16310

Для какого наибольшего целого неотрицательного числа A  выражение

(    13     )   -------
  x+ --y ≥ A  ∨ (x ≥ y)∨ (y < 7)
      9

тождественно истинно при любых целых неотрицательных x  и y?

Показать ответ и решение

Решение 1

Упростим, а затем инвертируем известную часть:

(x ≥ y) ∧(y ≥ 7)

Поскольку по условию A  должно быть меньше либо равно (x + 13y)
    9  , нам надо взять наименьшие возможные значения для X  и Y  , чтобы при больших значениях условие для A  точно выполнялось. Следовательно, нужно брать Y = 7,X = 7  , то есть     91
7 + (- ) ≥ A
     9  , или же 17,(1)  ≥ A  , наибольшим значением для A  будет 17.

Решение 2

def f(a):
    for x in range(1, 1000):
        for y in range(1, 1000):
            if ((x + 13/9 * y >= a) or not(x >= y) or (y < 7)) == False:
                return False
    return True

for a in range(100):
    if f(a):
        print(a)

Ответ: 17

Ошибка.
Попробуйте повторить позже

Задача 8#16311

Для какого наибольшего целого неотрицательного числа A  выражение

(5x + 2y ⁄= 85)∨ (A ≤ x)∨ (x ≤ y)

тождественно истинно при любых целых неотрицательных x  и y?

Показать ответ и решение

Решение 1 (руками)

Инвертируем известную часть:

(5x+ 2y = 85) ∧(x > y)

Нам нужно взять такое A  , чтобы оно было меньше либо равно X  . Значит, стоит взять наименьшее возможное    X  , чтобы при больших значениях X  условие точно выполнялось.

Чтобы выполнялось (5x + 2y = 85)  , нужно брать значения Y  кратные 5, т.к. 5x  кратно 5, и 85  кратно 5.

Нам подходят следующие пары переменных:

X = 15,Y = 5

X = 13,Y = 10

Пара X = 11,Y = 15  уже не будет подходить, т.к. условие (x > y)  не выполняется.

Следовательно, берём пару с наименьшим X  : X = 14,Y = 10  .

При X  = 13  , наибольшее A  равно 13.

Решение 2 (прогой)

def f(a):
    for x in range(1, 1000):
        for y in range(1, 1000):
            if not ((5 * x + 2 * y != 85) or (a <= x) or (x <= y)):
                return False
    return True


for a in range(1000, 0, -1):
    if f(a):
        print(a)
        break

Ответ: 13

Ошибка.
Попробуйте повторить позже

Задача 9#18039

Для какого наименьшего целого неотрицательного числа A  выражение

(x < A )∨(x < 20)∨ (x > 30)

тождественно истинно, т.е. принимает значение 1  при любых целых неотрицательных x  ?

Показать ответ и решение

Решение руками:

Инвертируем известную часть:

(x ≥ 20) ∧(x ≤ 30)

Нам нужно взять наибольшее возможное значение для X  , чтобы при меньших значениях условие x < A  точно выполнялось. Следовательно, при X = 30  , наименьшее A = 30  .

Решение программой:

for a in range(1000):
    fl = 0
    for x in range(1000):
        f = (x < a) or (x < 20) or (x > 30)
        if f == 0:
            fl = 1
            break
    if not fl:
        print(a)
        break

Ответ: 31

Ошибка.
Попробуйте повторить позже

Задача 10#18040

Для какого наименьшего целого неотрицательного числа A  выражение

(x2 − 3x+ 2 > 0)∨ (y > x2 + 7)∨ (xy < A )

тождественно истинно, т.е. принимает значение 1  при любых целых неотрицательных x,y  ?

Показать ответ и решение

Решение руками:

Инвертируем известную часть:

(x2 − 3x+ 2 ≤ 0)∧(y ≤ x2 + 7)

Корни для первого неравенства - 1 и 2, а значит можно превратить его в (x ≥ 1) ∧(x ≤ 2)  .

В данном диапазоне единственные целые значения x  - это 1 и 2.

При x = 1  , y ≤ 8  .

При x = 2  , y ≤ 11  .

Чтобы условие для A  точно выполнялось, нужно взять значения x,y  как можно больше, чтобы при меньших значения переменных выражение точно было истиной. Следовательно, x = 2,y = 11  , и при данных значениях наименьшее A = 23  .

Решение программой

def f(x, y, a):
    return (x ** 2 - 3 * x + 2 > 0) or (y > x ** 2 + 7) or (x * y < a)
for a in range(1000):
    fl = 0
    for x in range(300):
        for y in range(300):
            if not f(x, y, a):
                fl = 1
                break
        if fl:
            break
    if not fl:
        print(a)
        break

Ответ: 23

Ошибка.
Попробуйте повторить позже

Задача 11#20048

Для какого наименьшего целого неотрицательного числа A  выражение

(y + 2x < A )∨ (x > 30)∨ (y > 20)

тождественно истинно, то есть принимает значение 1  при любых целых неотрицательных x  и y  ?

Показать ответ и решение

Решение 1. Руками

Инвертируем известную часть:

(x ≤ 30) ∧(y ≤ 20)

Чтобы условие (y + 2x < A )  выполнялось всегда, надо взять для x  и y  наибольшие возможные значения, чтобы при меньших значениях условие точно выполнялось.

То есть, x = 30  , а y = 20  , тогда наименьшее возможное A = 81  .

Решение 2. Прогой

def f(x, y, A):
    return (y + 2 * x < A) or (x > 30) or (y > 20)
for A in range(10000):
    met_false = False
    for x in range(1000):
        for y in range(1000):
            if not f(x, y, A):
                met_false = True
                break
        if met_false:
            break
    if not met_false:
        print(A)
        break

 

Решение 3. Прогой

def f(a):
    for x in range(1000):
        for y in range(1000):
            if not((y + 2 * x < a) or (x > 30) or (y > 20)):
                return False
    return True
for a in range(1000):
    if f(a):
        print(a)
        break

Ответ: 81

Ошибка.
Попробуйте повторить позже

Задача 12#22206

Для какого наибольшего целого неотрицательного числа A  выражение

(x + 3y > A )∨(x < 18)∨(y < 33)

тождественно истинно при любых целых неотрицательных x  и y?

Показать ответ и решение

Решение 1. Руками

Инвертируем известную часть:

(x ≥ 18) ∧(y ≥ 33)

Чтобы условие (x + 3y > A )  выполнялось всегда, надо взять для x  и y  наименьшие возможные значения, чтобы при больших значениях A  точно было меньше, чем x + 3y  .

То есть, x = 18  , а y = 33  , 117 > A  , тогда наименьшее возможное A = 116  .

Решение 2. Прогой

def f(x, y, A):
    return (x + 3*y > A) or (x < 18) or (y < 33)
ans = 0
for a in range(1, 500):
    for x in range(1, 500):
        for y in range(1, 500):
            flag = True
            if not f(x, y, a):
                flag = False
                break
        if not flag:
            break
    if flag:
        ans = max(a, ans)
print(ans)

Ответ: 116

Ошибка.
Попробуйте повторить позже

Задача 13#22207

Для какого наименьшего целого неотрицательного числа A  выражение

(2x + 5y ≤ A) ∨(x ≥ y)∨ (y > 11)

тождественно истинно при любых целых неотрицательных x  и y?

Показать ответ и решение

Решение 1. Руками

Инвертируем известную часть:

(x < y)∧ (y ≤ 11)

Т.к. нам нужно, чтобы A  было больше, чем 2x +5y  , надо взять наибольшие возможные значения для x  и y  , тогда при меньших значениях для данных переменных, A  точно будет больше.

Следовательно, y = 11  , а x = 10  (т.к. x < y  должно выполняться).

(2× 10+ 5 × 11 ≤ A )  , или же (75 ≤ A)  , наименьшее значение A − 75  .

Решение 2. Прогой

def f(x, y, A):
    return (2 * x + 5 * y <= A) or (x >= y) or (y > 11)
for a in range(500):
    for x in range(100):
        for y in range(100):
            flag = True
            if not f(x, y, a):
                flag = False
                break
        if not flag:
            break
    if flag:
        print(a)
        break

Ответ: 75

Ошибка.
Попробуйте повторить позже

Задача 14#22650

Для какого наименьшего целого неотрицательного числа A  выражение

(y+ 2x < A)∨ (30 < x)∨ (20 < y)

тождественно истинно при любых целых неотрицательных x  и y?

Показать ответ и решение

Решение 1. Руками

Инвертируем известную часть:

(30 ≥ x) ∧(20 ≥ x)

Чтобы условие (y + 2x < A )  выполнялось всегда, надо взять для x  и y  наибольшие возможные значения, чтобы при меньших значениях условие точно выполнялось.

То есть, x = 30  , а y = 20  , тогда наименьшее возможное A = 81  .

Решение 2. Прогой

def f(x, y, A):
    return (y + 2*x < A) or (30 < x) or (20 < y)
ans = 10000000
for a in range(100):
    for x in range(100):
        for y in range(100):
            flag = True
            if not f(x, y, a):
                flag = False
                break
        if not flag:
            break
    if flag:
        ans = min(a, ans)
print(ans)

Ответ: 81

Ошибка.
Попробуйте повторить позже

Задача 15#22651

Для какого наибольшего целого неотрицательного числа A  выражение

((x ≤ 9) → (x⋅x ≤ A))∧ ((y ⋅y ≤ A ) → (y ≤ 10))

тождественно истинно при любых целых неотрицательных x  и y?

Показать ответ и решение

Аналитическое решение:

Упростим выражение и раскроем импликации:

((x > 9)∨ (x2 ≤ A))∧ ((y2 > A)∨ (y ≤ 10))

Обе части выражения должны давать истину, поэтому инвентируем известные части обеих частей выражения и рассмотрим их отдельно:

(x ≤ 9)

(y > 10)

Сначала рассмотрим левую часть:

Чтобы A  точно было больше, чем x2  , надо взять наибольшее возможное значение для x  , чтобы при меньших    x  выражение точно было истинным.

При x = 9  , 81 <= A  , значит A = 81,82,83  ... и так далее до бесконечности.

Теперь рассмотрим правую часть:

Чтобы A  точно было меньше, чем y2  , надо взять наименьшее значение для y  , чтобы при больших y  выражение точно было истинным.

При y = 11  , 121 > A  , A = 120  - максимальное возможное A  для правой части

Наибольшее общее значение для обеих частей выражения – это A = 120  .

 

Программное решение:

def f(a):
    for x in range(1, 1000):
        for y in range(1, 1000):
            if (((x <= 9) <= (x * x <= a)) and
                ((y * y <= a) <= (y <= 10))) == False:
                return False
    return True

for a in range(1000):
    if f(a):
        print(a)

Ответ: 120

Ошибка.
Попробуйте повторить позже

Задача 16#22652

Сколько существует целых неотрицательных чисел A  , при которых выражение

((y⋅y < A) → (y ≤ 8))∧((x ≤ 5) → (x⋅x ≤ A ))

тождественно истинно (т.е. принимает значение 1 при любых неотрицательных целых значениях переменных x  и y  )?

Показать ответ и решение

Решение руками:

Упростим выражение:

((y2 ≥ A) ∨(y ≤ 8))∧ ((x > 5)∨ (x2 ≥ A ))

Инвертируем известную часть для левой и правой части:

(y > 8)

(x ≤ 5)

Нам нужно, чтобы выполнялась и левая часть выражения, и правая.

Разберём сначала левую часть:

Чтобы ((y2 ≥ A )  выполнялось, нужно взять наименьшее возможное значение для y  , чтобы при больших y  выражение точно было истиной.

То есть, при y = 9  для левой части A = 81,80,79  ... и так до A = 0  .

Теперь разберём правую часть:

Чтобы (x2 ≥ A))  выполнялось, нужно взять наибольшее возможное значение для x  , чтобы при меньших x  выражение точно было истиной.

То есть, при x = 5  для правой части A = 25,26,27  ... и так до бесконечности.

Общие значения для обоих частей лежат в отрезке [25;81]  . Cледовательно, подходящих значений A  будет 81 − 25 + 1 = 57  .

Решение программой:

count = 0
for a in range(0, 1000):
    c = 0  # Переменная-флаг
    for x in range(1, 1000):
        for y in range(1, 1000):
            if (((y*y < a) <= (y <= 8)) and ((x <= 5) <= (x*x <= a))) == False:
                c = 1
                break
        if c == 1:
            break
    if c == 0:
        count += 1
print(count)

Ответ: 57

Ошибка.
Попробуйте повторить позже

Задача 17#23187

Для какого наименьшего целого числа A  формула

(x > 23)∨ (A > x) ∨(A > y)∨ (y > 47)

тождественно истинна при любых положительных x  и y  ?

Показать ответ и решение

Решение 1. Руками

Инвертируем известную часть:

(x ≤ 23) ∧(y ≤ 47)

Нужно, чтобы выполнялось одно из двух условий для A  : > x  и > y

Чтобы выполнялось A > x  , нужно взять наибольшее возможное значение для x  , чтобы при меньших x  значение       A  точно было больше.

A > 23  , значит нам подходят следующие значения для A  : 24,25,26  ... и так далее до бесконечности.

Чтобы выполнялось A > y  , нужно взять наибольшее возможное значение для y  , чтобы при меньших y  значение       A  точно было больше.

A > 47  , значит нам подходят следующие значения для A  : 48,49,50  ... и так далее до бесконечности.

Наименьшее А, которое удовлетворяет одному из условий – это A = 24  .

Решение 2. Программой

def f(x, y, a):
    return (x > 23) or (a > x) or (a > y) or (y > 47)

for a in range(1000):
    podh = True
    for x in range(1000):
        for y in range(1000):
            if not(f(x, y, a)):
                podh = False
                break
        if not(podh):
            break
    if podh:
        print(a)
        break

 

Решение 3. Программой

def f(a):
    for x in range(1000):
        for y in range(1000):
            # если отрицание функции истинно, то такое a
            # не подходит
            if not((x > 23) or (a > x) or (a > y) or(y > 47)):
                return False
    # если все значения A прошли проверку, то вернем истину
    return True
for a in range(100):
    if f(a):
        print(a)
        break

Ответ: 24

Ошибка.
Попробуйте повторить позже

Задача 18#23502

Укажите наименьшее целое значение A  , при котором выражение

(5k + 6n > 57)∨ ((k ≤ A )∧(n < A))

истинно для любых целых положительных значений k  и n  .

Показать ответ и решение

Аналитическое решение:

Инвертируем известную часть:

5k+ 6n ≤ 57

Чтобы выражение было истинным, для A  должны выполняться сразу оба условия из правой части, поэтому для 5k +6n ≤ 57  стоит подобрать 2 пары: с наибольшим значение k  , и с наибольшим значением n  , и выбрать из двух возможных A  наибольшее, чтобы при меньших значениях k  и n  выражение точно было истиной.

k = 10,n = 1  , поскольку k > n  , рассмотрим k ≤ A  :

10 <= A  , A = 10  .

k = 1,n = 8  , поскольку k < n  , рассмотрим n < A  :

8 < A  , A = 9  .

Т.к. 10 > 9,A = 10

 

Программное решение:

for a in range(0, 1000):
    flag = True
    for k in range(1, 1000):
        for n in range(1, 1000):
            if not ((5 * k + 6 * n > 57) or ((k <= a) and (n < a))):
                flag = False
                break
    if flag:
        print(a)
        break

Ответ: 10

Ошибка.
Попробуйте повторить позже

Задача 19#25775

Укажите наибольшее целое значение А, при котором выражение

                  3            2
(y − x ⁄= 5) ∨(A < 2x + y)∨ (A < y + 16)
истинно для любых целых положительных значений x и y.
Показать ответ и решение

Аналитическое решение:

Инвертируем известную часть:

y − x = 5

Пары, которые будут подходить под такое условие: y = 6,x = 1  ; y = 7,x = 2  ; y = 8,x = 3  и т.д.

Оба условия для A  построены так, что A  должно быть меньше правой части. Следовательно, чтобы A  точно было меньше при любых значениях x  и y  , надо взять наименьшие возможные значения для данных переменных, чтобы при больших значениях условие точно выполнялось.

Пара, подходящая под данное условие - это y = 6,x = 1  .

         3
A < (2∗ 1) +6  , A = 13

A < 62 + 16  , A = 51  .

Наибольшим значением для A  - это 51.

 

Программное решение:

def f(a):
    for x in range(1, 1000):
        for y in range(1, 1000):
            if ((y - x != 5) or (a < 2 * x ** 3 + y)
                or (a < y ** 2 + 16)) == False:
                return False
    return True

for a in range(100):
    if f(a):
        print(a)

Ответ: 51

Ошибка.
Попробуйте повторить позже

Задача 20#26148

Укажите наименьшее целое значение A,  при котором выражение

(5k + 6n > 57)∨ ((k ≤ A )∧(n < A))
истинно для любых целых положительных значений k  и n.
Показать ответ и решение

Аналитическое решение:

Инвертируем известную часть:

5k+ 6n ≤ 57

Чтобы выражение было истинным, для A  должны выполняться сразу оба условия из правой части, поэтому для 5k +6n ≤ 57  стоит подобрать 2 пары: с наибольшим значение k  , и с наибольшим значением n  , и выбрать из двух возможных A  наибольшее, чтобы при меньших значениях k  и n  выражение точно было истиной.

k = 10,n = 1  , поскольку k > n  , рассмотрим k ≤ A  :

10 <= A  , A = 10  .

k = 1,n = 8  , поскольку k < n  , рассмотрим n < A  :

8 < A  , A = 9  .

Т.к. 10 > 9,A = 10

 

Программное решение:

for A in range(10000):
    flag = True
    for k in range(1, 1000):
        for n in range(1, 1000):
            f = (5*k + 6*n > 57) or ((k <= A) and (n < A))
            if f == 0:
                flag = False
                break
        if flag == False:
            break
    if flag:
        print(A)
        break

Ответ: 10
Рулетка
Вы можете получить скидку в рулетке!