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

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

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

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

Задача 1#5784

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

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

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

Показать ответ и решение
def f(a):
    # если отрцание формулы возвращает истину,
    # то сама формула возвращает ложь
    for x in range(1000):
        for y in range(1000):
            if not((69 != y + 2 * x) or (a < x) or (a < y)):
                return False
    return True

for a in range(1000):
    if f(a):
        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)?

Показать ответ и решение
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

Враги хотят чтобы x  и y  были как можно больше и при этом y+ 2x  было меньше либо равно 69. x  и y  должны быть одновременно большими чтобы обе скобки с A  были ложны. Это возможно когда они оба равны 23 и их сумма бадет равна 69.

Тогда друзья подберут такой A  , что он будет гарантированно больше 23. Такой наименьший A = 24  .

Ответ: 24

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

Задача 5#16308

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

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

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

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

Враги хотят чтобы x  и y  были как можно меньше и при этом x ≥ 18  и y ≥ 33  . Тогда они возьмут x = 18,y = 33  .

Тогда друзья подберут такой A  , что он будет гарантированно меньше x+ 3y = 18 + 3⋅33 = 117  . Такой наибольший A = 116  .

Ответ: 116

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

Задача 6#16309

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

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

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

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

Решение 1

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

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

Решение 2

Враги хотят чтобы x  и y  были как можно меньше и при этом x > 20  и y ≥ 10  . Тогда они возьмут x = 21,y = 10  .

Тогда друзья подберут такой A  , что он будет гарантированно меньше либо равен 3x+ 9y = 153  . Такой наибольший A = 153  .

Ответ: 153

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

Задача 7#16310

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

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

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

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

Решение 1

Враги хотят чтобы x  и y  были как можно меньше и при этом x ≥ y  и y ≥ 7  . Тогда они возьмут x = 7,y = 7  .

Тогда друзья подберут такой A  , что он будет гарантированно меньше либо равен     13
x + 9-y = 17,(1)  . Такой наибольший 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?

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

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

Тогда друзья подберут такой A  , что он будет гарантированно меньше либо равен x = 13  . Такой наибольший A = 13  .

Ответ: 13

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

Задача 9#18039

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

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

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

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

Составим систему для врагов:

(
||| x ≥ A
{
|| x ≥ 20
|( x ≤ 30

Враги мечтают, чтобы x ∈ [20;30]  и x ≥ A  . Тогда максимальный x  , который смогут взять враги, чтобы победить, будет равен 30  . Мечты врагов такие: «Вот бы 30 ≥ A  ». Тогда друзья говорят: «Нет, 30 < A  ». Минимальное подходящее A  равно 31  .

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

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
|||
(xy ≥ A

Запишем мечты врагов:

1) x ∈ [1;2]  , так как  2
x  − 3x+ 2 = (x − 1)(x − 2)  .

2) выражение xy  должно быть как можно больше. Следовательно, враги хотят выбрать самый большой x  и самый большой y  , который должен быть не больше x2 + 7  .

Тогда враги возьмут x = 2,y = 22 + 7 = 11  .

Друзья хотят, чтобы A  было строго больше 2 ⋅11 = 22  . Минимальный такой 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. Руками

Система для врагов:

(
|||y + 2x ≥ A
{
||x ≤ 30
|(y ≤ 20

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

Получим: 20+ 2 ⋅30 < A  . Откуда следует, что 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?

Показать ответ и решение
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. Руками

Система для врагов:

(
||| 2x+ 5y > A
{
|| x < y
|( y ≤ 11

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

Получим: 2 ⋅10 + 5⋅11 ≤ 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?

Показать ответ и решение
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?

Показать ответ и решение
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  )?

Показать ответ и решение
def f(x, y, A):
    return (not(y*y < A) or (y <= 8)) and ((x <= 5) <= (x*x <= A))
ans = 0
for a in range(200):
    for x in range(200):
        for y in range(200):
            flag = True
            if not f(x, y, a):
                flag = False
                break
        if not flag:
            break
    if flag:
        ans += 1
print(ans)

Ответ: 57

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

Задача 17#23187

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

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

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

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

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

Система для врагов:

(
||| x ≤ 23
|||{
  A ≤ x
||| A ≤ y
|||(
  y ≤ 47

Чтобы условия врагов не выполнялись, друзья должны взять такое A  , чтобы при всех x  и y  , которые хотят враги выполнялось A > x  или A > y  (хотя бы одно из условий). Чтобы получить искомое A  , посмотрим, какие значения   нас принимают x  и y  . Из неравенств следует, что максимальные значения x  и y  равны 23  и 47  соответсвенно. А значит, можно выбрать то условие для A  , где оно больше всех значений x  (т.к. найдутся значения y  больше). Тогда чтобы выполнилось условие A > x  значение, которое должно принимать 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  .

Показать ответ и решение
for a in range(0, 1000):
    flag = True
    for k in range(1, 1000):
        for n in range(1, 1000):
            if ((5*k + 6*n > 57) or ((k <= a) and (n < a))) == False:
                flag = False
                break
    if flag:
        print(a)
        break

Ответ: 10

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

Задача 19#25775

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

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

Решение 1

Система для врагов:

(
||{5k + 6n ≤ 57
 [
||(  k > A
   n ≥ A

Враги мечтают чтобы 5k+ 6n ≤ 57  и при этом k было бы больше A или чтобы n было бы больше или равно A. Значит, нужно понять, какие максимальные значения могут принимать k и n. Максимальное k = 10, максимальное n = 8. Чтобы условия врагов не выполнялись, друзья должны взять такое A, чтобы ((k ≤ A)∧ (n < A )).  Наименьшим значением будет A = 10.

Решение 2

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
Рулетка
Вы можете получить скидку в рулетке!