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

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

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

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

Задача 41#41965Максимум баллов за задание: 1

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

(x ⋅y > A )∨ (27 > y)∨ (y− 20 ≥ A )∨ (x < 8)

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

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

Решение аналитикой

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

(27 ≥ y)∧ (x ≥ 8)

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

y = 27,x = 8  :

8∗ 27 > A  , 216 > A  , максимальное значение для A  в данном условии – 215.

27− 20 ≥ A  , 7 ≥ A  , максимальное значение для A  в данном условии – 7.

Поскольку нам достаточно, чтобы выполнялось одно из двух условий, мы выбираем наибольшее из двух A − 215  .

 

Идея решения:

Перебираем целые значения A  по убыванию (в коде — от 500 до 2). Для каждого A  вложенными циклами for перебираем положительные значения x  и y  (в коде — от 1 до 299) и проверяем выполнение выражения

(x ⋅y > A )∨(27 > y)∨(y − 20 ≥ A) ∨(x < 8).

Если для какой-либо пары (x,y)  выражение не выполняется (ложно), текущее A  отбрасываем. Первое A  , для которого выражение истинно для всех перебранных (x,y)  , и будет искомым наибольшим.

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

# перебираем значения A по убыванию
for a in range(500, 1, -1):
    f = 0  # флаг, показывает наличие ложного выражения
    # перебираем положительные x
    for x in range(1, 300):
        # перебираем положительные y
        for y in range(1, 300):
            # проверяем выражение
            if ((x * y > a) or (27 > y) or ((y - 20) >= a) or (x < 8)) == False:
                f = 1  # выражение ложно, A не подходит
                break
        if f == 1:  # если флаг поднят, выходим из цикла по x
           break
    if f == 0:  # если ложных выражений не найдено
        print(a)  # наибольшее подходящее A
        break

Ответ: 215

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

Задача 42#41967Максимум баллов за задание: 1

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

(6x + 8y ⁄= 128)∨ (x < y) ∨(3y < A )

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

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

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

Найдем при каких x  и y  выражение ложно. Для этого отрицаем известную часть:

(
{ 6x +8y = 128
(
  x ≥ y

Все возможные x  и y  , где x ≥ y  :

|x--|y-|
|---|--|
|12-|7-|
|16 |4 |
|20-|1-|
-------|

Нужно, чтобы для таких x  и y  выражение стало истинно. Значит нужно, чтобы неравенство 3y < A  для них выполнялось. Максимальное y = 7  , значит, A > 21  . Наименьшее A = 22  .

Идея решения:

Перебираем целые значения A  по возрастанию (в коде — от -10 до 999). Для каждого A  вложенными циклами for перебираем положительные значения x  и y  (в коде — от 1 до 2999) и проверяем выполнение выражения

(6x + 8y ⁄= 128)∨ (x < y)∨ (3y < A ).

Если для какой-либо пары (x,y)  выражение не выполняется (ложно), текущее A  отбрасываем. Первое A  , для которого выражение истинно для всех перебранных (x,y)  , и будет искомым наименьшим.

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

# перебираем значения A по возрастанию
for a in range(-10, 1000):
    c = 0  # флаг, показывает наличие ложного выражения
    # перебираем положительные x
    for x in range(1, 3000):
        # перебираем положительные y
        for y in range(1, 3000):
            # проверяем выражение
            if ((6 * x + 8 * y != 128) or (x < y) or (3 * y < a)) == False:
                c = 1  # выражение ложно, A не подходит
                break
        if c == 1:  # если флаг поднят, выходим из цикла по x
            break
    if c == 0:  # если ложных выражений не найдено
        print(a)  # наименьшее подходящее A
        break

Ответ: 22

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

Задача 43#41968Максимум баллов за задание: 1

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

((x− 10 < A) → (y+ 28 ≥ 4A ))∨(x + y ⁄= 17)

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

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

Решение аналитикой

Формула состоит из двух частей:

1. (x− 10 < A) → (y+ 28 ≥ 4A )

2. x + y ⁄= 17

Формула будет истинной, если хотя бы одна из частей истинна.

Первая часть является импликацией, которая истинна в следующих случаях:

- Если x − 10 < A  ложно, то есть x ≥ A+ 10  .

- Если x − 10 < A  истинно, то необходимо, чтобы y + 28 ≥ 4A  .

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

1. Если x < A + 10  , тогда должно выполняться условие y+ 28 ≥ 4A  .

2. Если x ≥ A + 10  , то первая часть всегда истинна.

Вторая часть формулы x + y ⁄= 17  будет ложной только в одном случае: когда x + y = 17  . Чтобы формула была тождественно истинной, необходимо, чтобы первое условие обеспечивало истинность в случае, когда x + y = 17  .

Рассмотрим случай, когда x+ y = 17  . Из этого уравнения можно выразить y = 17− x  . Теперь подставим это значение во вторую часть:

y+ 28 = (17− x) +28 = 45− x.

Таким образом, для первой части формулы при условии x < A + 10  :

45− x ≥ 4A

или

x ≤ 45 − 4A.

Теперь у нас есть два условия:

1. x < A + 10

2. x ≤ 45− 4A

Чтобы обе части были истинны одновременно, необходимо:

A + 10 > 45− 4A.

Решим это неравенство:

A + 10 +4A > 45,

5A > 35,

A > 7.

Следовательно, наибольшее целое число A  , которое удовлетворяет этому неравенству, равно:

A = 7.

Идея решения:

Перебираем целые значения A  по убыванию (в коде — от 100 до 2). Для каждого A  вложенными циклами for перебираем положительные значения x  и y  (в коде — от 1 до 999) и проверяем выполнение выражения

((x− 10 < A) → (y + 28 ≥ 4A )) ∨(x+ y ⁄= 17).

Если найдётся хотя бы одна пара (x,y)  , для которой выражение не выполняется (ложно), текущее A  отбрасываем. Первое A  , для которого выражение истинно для всех перебранных (x,y)  , и будет искомым наибольшим.

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

# перебираем значения A по убыванию
for A in range(100, 1, -1):
    p = True  # флаг, показывает, что A пока подходит
    # перебираем положительные x
    for x in range(1, 1000):
        # перебираем положительные y
        for y in range(1, 1000):
            # проверяем выражение
            f = ((x - 10 < A) <= (y + 28 >= 4 * A)) or (x + y != 17)
            if f == False:  # если выражение ложно
                p = False   # A не подходит
                break
        if p == False:  # если флаг снят, выходим из цикла по x
            break
    if p == True:  # если ложных выражений не найдено
        print(A)    # наибольшее подходящее A
        break

Ответ: 7

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

Задача 44#51790Максимум баллов за задание: 1

На числовой прямой задан отрезок A  . Известно, что формула

((x ∈ A) → (x2 ≤ 144))∧ ((y2 ≤ 100) → (y ∈ A ))

тождественно истинна при любых вещественных x  и y  . Какую наибольшую длину может иметь отрезок A  ?

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

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

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

((x ∕∈ A)∨ (x2 ≤ 144))∧ ((y2 > 100) ∨(y ∈ A ))

Нарисуем полученные неравенства на числовых осях:

PIC

Красным на этом рисунке выделены области, которые перекрываются известной частью выражения, а синей те части, которые необходимо перекрыть отрезком A  . Так как (x ∕∈ A)  и (y ∈ A)  , то наибольший отрезок, которым может быть A  это [-12; 12]. Так как если сделать его еще больше, то будут точки на оси x  для которых выражение не будет являться истиной. Длина этого отрезка – 24.

Идея решения:

Перебираем все возможные отрезки A = [a,b]  в заданном диапазоне вещественных чисел. Для каждого такого отрезка проверяем тождественную истинность формулы для множества точек x  и y  с определённой дискретизацией (например, с шагом 0.25):

            2           2
((x ∈ A) → (x  ≤ 144))∧((y ≤ 100) → (y ∈ A)).

- Если для какого-либо x  или y  формула не выполняется, текущий отрезок отбрасываем. - Если формула выполняется для всех перебранных точек, отрезок считается подходящим, и мы обновляем максимум длины b− a  .

После перебора всех вариантов отрезков максимальная найденная длина будет наибольшей возможной длиной отрезка A  , при которой формула тождественно истинна.

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

maxLen = 0  # Наибольшая длина отрезка A

# Перебор целых значений для a и b с шагом 0.25, поэтому умножаем на 4
for a in range(-30, 30 + 1):
    for b in range(a, 30 + 1):
        ok = 1  # Флаг, показывает, что отрезок подходит

        # Перебор x с шагом 0.25
        for x in range(-30*4, 30*4 + 1):
            x /= 4
            # Перебор y с шагом 0.25
            for y in range(-30*4, 30*4 + 1):
                y /= 4
                # Проверяем тождественную истинность формулы для текущих x, y
                F = ((a <= x <= b) <= (x**2 <= 144)) and ((y**2 <= 100) <= (a <= y <= b))
                if F == 0:  # Если формула не выполняется
                    ok = 0  # Отрезок не подходит
                    break  # Прерываем перебор y

            if ok == 0:  # Если формула не выполняется, прерываем перебор x
                break

        if ok == 1:  # Если отрезок подошёл для всех x и y
            maxLen = max(maxLen, (b - a))  # Обновляем максимальную длину

print(maxLen)  # Выводим наибольшую возможную длину отрезка A

Ответ: 24

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

Задача 45#51791Максимум баллов за задание: 1

На числовой прямой задан отрезок A  . Известно, что формула

((x ∈ A ) → (x2 ≤ 100))∧ ((y2 ≤ 25) → (y ∈ A))

тождественно истинна при любых вещественных x  и y  . Какую наименьшую длину может иметь отрезок A  ?

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

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

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

((x∈∕A )∨(x2 ≤ 100))∧ ((y2 > 25)∨ (y ∈ A))

Нарисуем полученные неравенства на числовых осях:

PIC

Красным на этом рисунке выделены области, которые перекрываются известной частью выражения, а синей те части, которые необходимо перекрыть отрезком A  . Так как (x ∕∈ A)  и (y ∈ A)  , то наименьший отрезок, которым может быть A  это [-5; 5]. Так как если сделать его еще меньше, то будут точки на оси y  для которых выражение не будет являться истиной. Длина этого отрезка – 10.

Идея программного решения:

Перебираем все возможные отрезки A = [a,b]  на числовой прямой с шагом дискретизации (например, 0.25), чтобы учитывать вещественные значения. Для каждого отрезка проверяем тождественную истинность формулы для всех выбранных точек x  и y  :

            2           2
((x ∈ A ) → (x ≤ 100))∧ ((y ≤ 25) → (y ∈ A )).

- Если формула не выполняется для какой-либо пары (x,y)  , отрезок отбрасываем. - Если формула выполняется для всех перебранных точек, отрезок считается подходящим, и мы обновляем минимум длины b− a  .

После перебора всех вариантов отрезков минимальная найденная длина будет наименьшей возможной длиной отрезка A  , при которой формула тождественно истинна.

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

minLen = 10**10  # Наименьшая длина отрезка A

# Перебор целых значений для a и b с шагом 0.25 (умножаем на 4)
for a in range(-30, 30):
    for b in range(a, 30):
        ok = 1  # Флаг, показывает, что отрезок подходит

        # Перебор x с шагом 0.25
        for x in range(-30*4, 30*4 + 1):
            x /= 4
            # Перебор y с шагом 0.25
            for y in range(-30*4, 30*4 + 1):
                y /= 4
                # Проверяем тождественную истинность формулы для текущих x, y
                F = ((a <= x <= b) <= (x**2 <= 100)) and ((y**2 <= 25) <= (a <= y <= b))
                if F == 0:  # Если формула не выполняется
                    ok = 0  # Отрезок не подходит
                    break  # Прерываем перебор y
            # Если формула не выполняется, прерываем перебор x
            if ok == 0:
                break
        # Если отрезок подошёл для всех x и y
        if ok == 1:
            # Обновляем минимальную длину
            minLen = min(minLen, (b - a))
# Выводим наименьшую возможную длину отрезка A
print(minLen)

Ответ: 10

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

Задача 46#51792Максимум баллов за задание: 1

На числовой прямой задан отрезок А. Известно, что формула

((x ∈ A) → (x2 ≤ 81))∧ ((y2 ≤ 36) → (y ∈ A ))

тождественно истинна при любых вещественных x и y. Найдите наибольшую и наименьшую длины, которые может иметь отрезок А? В ответе укажите разницу между этими числами.

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

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

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

((x ∕∈ A)∨ (x2 ≤ 81))∧ ((y2 > 36) ∨(y ∈ A ))

Нарисуем полученные неравенства на числовых осях:

PIC

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

Так как (x ∕∈ A)  и (y ∈ A)  , то наименьший отрезок, которым может быть A  это [-6; 6]. Так как если сделать его еще меньше, то будут точки на оси y  для которых выражение не будет являться истиной. Длина этого отрезка – 12.

Наибольший отрезок, которым может быть A  это [-9; 9]. Так как если сделать его еще больше, то будут точки на оси x  для которых выражение не будет являться истиной. Длина этого отрезка – 18.

Остается только найти разницу между этими числами: 18 − 12 = 6  .

Идея программного решения:

Перебираем все возможные отрезки A = [a,b]  на числовой прямой с шагом дискретизации (например, 0.25), чтобы учитывать вещественные значения. Для каждого отрезка проверяем тождественную истинность формулы для всех выбранных точек x  и y  :

((x ∈ A) → (x2 ≤ 81))∧((y2 ≤ 36) → (y ∈ A)).

- Если формула не выполняется для какой-либо пары (x,y)  , отрезок отбрасываем. - Если формула выполняется для всех перебранных точек, отрезок считается подходящим. - Для подходящих отрезков сохраняем минимальную и максимальную длину b− a  .

Разница между максимальной и минимальной длиной будет искомым ответом.

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

# Наименьшая длина отрезка A
minLen = 10**10

# Наибольшая длина отрезка A
maxLen = 0

# Перебор возможных значений a и b (отрезок A = [a,b])
for a in range(-30, 30):
    for b in range(a, 30):
        # Флаг, показывает, что отрезок подходит
        ok = 1
        # Перебор x с шагом 0.25
        for x in range(-30*4, 30*4 + 1):
            x /= 4
            # Перебор y с шагом 0.25
            for y in range(-30*4, 30*4 + 1):
                y /= 4
                # Проверяем тождественную истинность формулы для текущих x и y
                F = ((a <= x <= b) <= (x**2 <= 81)) and ((y**2 <= 36) <= (a <= y <= b))

                # Если формула не выполняется для текущих x и y
                if F == 0:
                    # Отрезок не подходит
                    ok = 0
                    # Прерываем перебор y
                    break

            # Если формула не выполняется, прерываем перебор x
            if ok == 0:
                break
        # Если отрезок подходит для всех x и y
        if ok == 1:
            # Обновляем минимальную длину
            minLen = min(minLen, (b - a))
            # Обновляем максимальную длину
            maxLen = max(maxLen, (b - a))
# Выводим разницу между максимальной и минимальной длиной
print(maxLen - minLen)

Ответ: 6

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

Задача 47#53435Максимум баллов за задание: 1

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

(5x +6y < 121)∨ (y > A) ∨(x > A)

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

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

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

Если 5x+ 6y < 121 = 0  , тогда (y > A ) = 1  или (x > A ) = 1  . Получаем, что 5x+ 6y ≥ 121  . При y = x  : 5x + 6x ≥ 121  .

x ≥ 11  . Максимальное значение x = 11  , так как A < x  , то A = 10

Идея решения:

Перебираем целые неотрицательные значения A  по убыванию, чтобы первым получить наибольшее подходящее. Для каждого A  проверяем тождественную истинность выражения

(5x +6y < 121)∨ (y > A) ∨(x > A)

для всех положительных целых x  и y  в выбранном диапазоне (например, от 0 до 99). Если найдется хотя бы одна пара (x,y)  , для которой выражение ложно, текущее A  отбрасываем. Первое A  , для которого выражение истинно для всех перебранных пар, и будет искомым наибольшим.

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

# Перебор возможных значений A по убыванию
for a in range(100, -1, -1):
    # Флаг, показывает, встречались ли ложные выражения
    f = 0

    # Перебор положительных целых x и y
    for x in range(100):
        for y in range(100):
            # Проверяем тождественную истинность выражения
            if ((5*x + 6*y < 121) or (y > a) or (x > a)) == False:
                # Выражение ложно для текущих x и y
                f = 1
                break

        # Если выражение ложно, прерываем перебор x
        if f == 1:
            break

    # Если ложных выражений не было, выводим A и завершаем поиск
    if f == 0:
        print(a)
        break

Получаем ответ: 10.

Ответ: 10

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

Задача 48#54822Максимум баллов за задание: 1

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

            2          2
((x ≤ 9) → (x ≤ A )) ∧((y ≤ A ) → (y < 14))

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

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

Идея решения:

Перебираем целые неотрицательные значения A  с помощью цикла for по убыванию, чтобы первым получить наибольшее подходящее. Для каждого A  проверяем тождественную истинность выражения

((x ≤ 9) → (x2 ≤ A )) ∧((y2 ≤ A ) → (y < 14))

для всех положительных целых x  и y  , перебирая их с помощью вложенных циклов for. Если найдётся хотя бы одна пара (x,y)  , для которой выражение ложно, текущее A  отбрасываем. Первое A  , для которого выражение истинно для всех перебранных пар, и будет искомым наибольшим.

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

# Перебор возможных значений A с помощью цикла for по убыванию
for a in range(300, 1, -1):
    # Флаг, показывает, встречались ли ложные выражения
    f = 0

    # Перебор положительных целых x и y с помощью вложенных циклов for
    for x in range(1, 300):
        for y in range(1, 300):
            # Проверяем тождественную истинность выражения
            if (((x <= 9) <= (x**2 <= a)) and ((y**2 <= a) <= (y < 14))) == False:
                # Выражение ложно для текущих x и y
                f = 1
                break

        # Если выражение ложно, прерываем перебор x
        if f == 1:
            break

    # Если ложных выражений не было, выводим A и завершаем поиск
    if f == 0:
        print(a)
        break

Получаем ответ: 195.

Ответ: 195

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

Задача 49#54823Максимум баллов за задание: 1

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

(y+ 2x ⁄= 77)∨ (y > A) ∨(x > A)

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

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

Идея решения:

Перебираем целые неотрицательные значения A  с помощью цикла for по убыванию, чтобы первым получить наибольшее подходящее. Для каждого A  проверяем тождественную истинность выражения

(y+ 2x ⁄= 77)∨ (y > A) ∨(x > A)

для всех положительных целых x  и y  , перебирая их с помощью вложенных циклов for. Если найдётся хотя бы одна пара (x,y)  , для которой выражение ложно, текущее A  отбрасываем. Первое A  , для которого выражение истинно для всех перебранных пар, и будет искомым наибольшим.

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

# Перебор возможных значений A с помощью цикла for по убыванию
for a in range(250, 1, -1):
    # Флаг, показывает, встречались ли ложные выражения
    f = 0
    # Перебор положительных целых x и y с помощью вложенных циклов for
    for x in range(1, 300):
        for y in range(1, 300):
            # Проверяем тождественную истинность выражения
            if ((y + 2*x != 77) or (y > a) or (x > a)) == False:
                # Выражение ложно для текущих x и y
                f = 1
                break
        # Если выражение ложно, прерываем перебор x
        if f == 1:
            break
    # Если ложных выражений не было, выводим A и завершаем поиск
    if f == 0:
        print(a)
        break

Получаем ответ: 25.

Ответ: 25

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

Задача 50#54928Максимум баллов за задание: 1

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

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

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

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

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

Пусть наше выражение ложно. Тогда,

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

Возьмём наибольшие допустимые x и y. Тогда, x = 30,y = 20  .

Вернёмся к изначальному условию, где y + 2⋅x < A  . Получаем, что A > 20+ 2⋅30  , A > 80  . Значит, наименьшее значение А - 81.

Получается ответ: 81.

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

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

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

тождественно истинно для всех неотрицательных целых x  и y  , используем программный перебор. Идея заключается в том, чтобы проверить все значения A  от -100 до 149 с помощью цикла for. Для каждого A  перебираем все значения x  и y  от 1 до 999 через вложенные циклы for. Для каждой тройки (A, x,y)  вычисляем логическое выражение. Если хотя бы для одной пары (x,y)  выражение оказалось ложным, текущее A  отбрасываем. Если выражение истинно для всех (x,y)  , выводим найденное минимальное A  и завершаем перебор.

# перебор возможных значений A
for a in range(-100, 150):
    c = 0  # переменная-флаг: 0 - выражение выполняется для всех x, y, 1 - есть ложное
    # перебор всех x от 1 до 999
    for x in range(1, 1000):
        # перебор всех y от 1 до 999
        for y in range(1, 1000):
            # проверка истинности выражения для текущих x, y и A
            if ((y + 2*x < a) or (x > 30) or (y > 20)) == False:
                c = 1  # если выражение ложно, меняем флаг
                break  # выход из цикла по y
        if c == 1:
            break  # выход из цикла по x
    # если выражение истинно для всех x и y, выводим найденный A и прерываем цикл
    if c == 0:
        print(a)
        break

Ответ: 81

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

Задача 51#57281Максимум баллов за задание: 1

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

(x > A)∨ (y > A )∨ (2x + y ⁄= 48)

истинно для любых целых неотрицательных значений x  и y  .

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

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

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

(x > A)∨ (y > A )∨ (2x + y ⁄= 48)

тождественно истинно для всех неотрицательных целых x  и y  , используем программный перебор. Идея заключается в том, чтобы проверить все значения A  в порядке убывания от 100 до 2 с помощью цикла for. Для каждого A  перебираем все значения x  и y  от 0 до 99 через вложенные циклы for. Для каждой тройки (A,x,y)  вычисляем логическое выражение. Если хотя бы для одной пары (x,y)  выражение оказалось ложным, текущее A  отбрасываем. Если выражение истинно для всех (x,y)  , выводим найденный максимальный A  и прекращаем перебор.

# перебор возможных значений A от 100 до 2 в порядке убывания
for a in range(100, 1, -1):
    f = 0  # флаг: 0 - выражение выполняется для всех x и y, 1 - есть ложное
    # перебор всех x от 0 до 99
    for x in range(100):
        # перебор всех y от 0 до 99
        for y in range(100):
            # проверка истинности выражения для текущих x, y и A
            if ((x > a) or (y > a) or (2*x + y != 48)) == False:
                f = 1  # если выражение ложно, меняем флаг
                break  # выход из цикла по y
        if f == 1:
            break  # выход из цикла по x
    # если выражение истинно для всех x и y, выводим найденный максимальный A и прерываем цикл
    if f == 0:
        print(a)
        break

Получаем ответ: 15.

Ответ: 15

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

Задача 52#58969Максимум баллов за задание: 1

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

(x− y ≥ 5)∨ (x ≤ A)∨ (y ≥ A )∨ (x + y ≤ 64)

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

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

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

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

(x− y ≥ 5)∨ (x ≤ A)∨ (y ≥ A )∨ (x + y ≤ 64)

тождественно истинно для всех положительных целых x  и y  , используем программный перебор. Идея заключается в том, чтобы проверить все значения A  в порядке убывания от 100 до 2 с помощью цикла for. Для каждого A  перебираем все значения x  и y  от 1 до 999 через вложенные циклы for. Для каждой тройки (A, x,y)  вычисляем логическое выражение. Если хотя бы для одной пары (x,y)  выражение оказалось ложным, текущее A  отбрасываем. Если выражение истинно для всех (x,y)  , выводим найденный максимальный A  и прекращаем перебор.

# перебор возможных значений A от 100 до 2 в порядке убывания
for a in range(100, 1, -1):
    flag = True  # флаг: True - выражение выполняется для всех x и y, False - есть ложное
    # перебор всех x от 1 до 999
    for x in range(1, 1000):
        # перебор всех y от 1 до 999
        for y in range(1, 1000):
            # проверка истинности выражения для текущих x, y и A
            if ((x - y >= 5) or (x <= a) or (y >= a) or (x + y <= 64)) == False:
                flag = False  # если выражение ложно, меняем флаг
                break  # выход из цикла по y
        if flag == False:
            break  # выход из цикла по x
    # если выражение истинно для всех x и y, выводим найденный максимальный A и прерываем цикл
    if flag:
        print(a)
        break

Получается ответ: 31.

Ответ: 31

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

Задача 53#60313Максимум баллов за задание: 1

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

((A > x)∧ (A > y))∨ (53x+ 9y > 30050)

истинно для любых целых неотрицательных значений x и y.

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

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

Для нахождения наименьшего целого A  , при котором выражение

((A > x)∧ (A > y))∨ (53x+ 9y > 30050)

тождественно истинно для всех неотрицательных целых x  и y  , используем программный перебор. Идея заключается в том, чтобы проверить все значения A  от 1 до 9999 с помощью цикла for. Для каждого A  перебираем все значения x  и y  от 0 до 4999 через вложенные циклы for. Для каждой тройки (A, x,y)  вычисляем логическое выражение. Если хотя бы для одной пары (x,y)  выражение оказалось ложным, текущее A  отбрасываем. Если выражение истинно для всех (x,y)  , выводим найденный минимальный A  и прекращаем перебор.

# перебор возможных значений A от 1 до 9999
for a in range(1, 10000):
    f = 0  # флаг: 0 - выражение выполняется для всех x и y, 1 - есть ложное
    # перебор всех x от 0 до 4999
    for x in range(5000):
        # перебор всех y от 0 до 4999
        for y in range(5000):
            # проверка истинности выражения для текущих x, y и A
            if (((a > x) and (a > y)) or (53*x + 9*y > 30050)) == False:
                f = 1  # если выражение ложно, меняем флаг
                break  # выход из цикла по y
        if f == 1:
            break  # выход из цикла по x
    # если выражение истинно для всех x и y, выводим найденный минимальный A и прерываем цикл
    if f == 0:
        print(a)
        break

Получает ответ: 3339.

Ответ: 3339

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

Задача 54#60321Максимум баллов за задание: 1

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

(x ⋅y > 2000)∧ (x+ y > 450)∧(x < A)∧ (y < A )

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

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

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

Для нахождения наибольшего целого A  , при котором выражение

(x ⋅y > 2000)∧ (x+ y > 450)∧(x < A)∧ (y < A )

тождественно ложно для всех положительных целых x  и y  , используем программный перебор. Идея заключается в том, чтобы проверить все значения A  от 500 вниз до 1 с помощью цикла for. Для каждого A  перебираем все значения x  и y  от 1 до 499 через вложенные циклы for. Если хотя бы для одной пары (x,y)  выражение становится истинным, текущее A  отбрасываем. Если выражение ложное для всех (x,y)  , выводим найденный максимальный   A  и прекращаем перебор.

# перебор возможных значений A от 500 вниз до 1
for a in range(500, 1, -1):
    f = 0  # флаг: 0 - выражение ложно для всех x и y, 1 - есть истинное
    # перебор всех x от 1 до 499
    for x in range(1, 500):
        # перебор всех y от 1 до 499
        for y in range(1, 500):
            # проверка истинности выражения для текущих x, y и A
            if (((x*y) > 2000) and ((x+y) > 450) and (x < a) and (y < a)) == True:
                f = 1  # если выражение истинно, меняем флаг
                break  # выход из цикла по y
        if f == 1:
            break  # выход из цикла по x
    # если выражение ложно для всех x и y, выводим найденный максимальный A и прерываем цикл
    if f == 0:
        print(a)
        break

Получаем ответ: 226.

Ответ: 226

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

Задача 55#60322Максимум баллов за задание: 1

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

((y2 + y > A ) −→ (y > 8))∧ ((x2 + 3x > A) −→ (x > 15))

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

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

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

Для нахождения наименьшего целого A  , при котором выражение

((y2 + y > A ) −→ (y > 8))∧ ((x2 + 3x > A) −→ (x > 15))

тождественно истинно для всех неотрицательных целых x  и y  , используем программный перебор. Идея заключается в том, чтобы проверить все значения A  от 1 до 499 с помощью цикла for. Для каждого A  перебираем все значения x  и y  от 0 до 999 через вложенные циклы for. Если хотя бы для одной пары (x,y)  выражение оказалось ложным, текущее A  отбрасываем. Если выражение истинно для всех (x,y)  , выводим найденный минимальный A  и прекращаем перебор.

# перебор возможных значений A от 1 до 499
for a in range(1, 500):
    f = 0  # флаг: 0 - выражение истинно для всех x и y, 1 - есть ложное
    # перебор всех x от 0 до 999
    for x in range(1000):
        # перебор всех y от 0 до 999
        for y in range(1000):
            # проверка истинности импликаций для текущих x, y и A
            if (((y*y + y > a) <= (y > 8)) and ((x*x + 3*x > a) <= (x > 15))) == False:
                f = 1  # если выражение ложно, меняем флаг
                break  # выход из цикла по y
        if f == 1:
            break  # выход из цикла по x
    # если выражение истинно для всех x и y, выводим минимальный A и прерываем цикл
    if f == 0:
        print(a)
        break

Получаем ответ: 270.

Ответ: 270

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

Задача 56#62830Максимум баллов за задание: 1

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

((x2 ≤ A) → (x ≤ 5))∨ ((y2 ≤ A) → (y < 2))

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

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

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

Для нахождения количества натуральных значений A  , при которых выражение

((x2 ≤ A) → (x ≤ 5))∨ ((y2 ≤ A) → (y < 2))

тождественно истинно для всех неотрицательных целых x  и y  , используем программный перебор. Идея заключается в том, чтобы проверить все значения A  от 1 до 99 с помощью цикла for. Для каждого A  перебираем все значения x  и y  от 0 до 499 через вложенные циклы for. Если хотя бы для одной пары (x,y)  выражение оказалось ложным, текущее A  отбрасываем. Если выражение истинно для всех (x,y)  , увеличиваем счётчик найденных подходящих A  . В конце цикла счётчик содержит общее количество натуральных A  , удовлетворяющих условию.

# Инициализируем счетчик найденных значений
c = 0
# Перебор возможных значений A от 1 до 99
for a in range(1, 100):
    f = 0  # флаг: 0 - выражение истинно для всех x и y, 1 - есть ложное
    # перебор всех x от 0 до 499
    for x in range(500):
        # перебор всех y от 0 до 499
        for y in range(500):
            # проверка выполнения выражения для текущих x, y и A
            if (((x**2 <= a) <= (x <= 5)) or ((y**2 <= a) <= (y < 2))) == 0:
                f = 1  # если выражение ложно, меняем флаг
                break  # выход из цикла по y
        if f == 1:
            break  # выход из цикла по x
    # если выражение истинно для всех x и y, увеличиваем счетчик
    if f == 0:
        c += 1
# выводим количество подходящих значений A
print(c)

Получаем ответ: 35.

Ответ: 35

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

Задача 57#62994Максимум баллов за задание: 1

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

(2x+ 3y < A)∨ (x > y)∨ (y > 24)

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

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

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

Построим на плоскости графики известной части (зеленым отмечена область, которая удовлетворяет неравенству y > 24  , а голубым – неравенству x > y  ). Так как оба неравенства строгие, то сама прямая не подходит под неравенство. Не перекрытой останется только область, отмеченая красным.

PIC

Если преобразовать третье неравенство, то получается     A−-2x-
y <   3  – это убывающая прямая. Коэффициент A  влияет на то, где эта прямая будет пересекать ось y  .

Для того чтобы перекрыть красный треугольник, нам нужно чтобы прямая проходила чуть выше точки пересечения прямых x = y  и y = 24  . Для этого подставим координты x = 24,y = 24  в уравнение     A − 2x
y = ------
       3  , а затем к полученному A  прибавим 1, чтобы эта прямая была чуть выше точки пересечения двух других прямых.

Решение Python:

Для нахождения наименьшего целого неотрицательного A  , при котором выражение

(2x+ 3y < A)∨ (x > y)∨ (y > 24)

тождественно истинно для всех неотрицательных целых x  и y  , используем программный перебор. Идея заключается в том, чтобы проверить все значения A  от -100 до 149 с помощью цикла for. Для каждого A  перебираем все значения x  и y  от 1 до 999 через вложенные циклы for. Если хотя бы для одной пары (x,y)  выражение оказалось ложным, текущее A  отбрасываем. Если выражение истинно для всех (x,y)  , фиксируем найденное минимальное A  и завершаем поиск.

for a in range(-100, 150):
    c = 0  # флаг: 0 - выражение истинно для всех x и y, 1 - есть ложное
    # перебор всех x от 1 до 999
    for x in range(1, 1000):
        # перебор всех y от 1 до 999
        for y in range(1, 1000):
            # проверка выполнения выражения для текущих x, y и A
            if ((2*x + 3*y < a) or (x > y) or (y > 24)) == False:
                c = 1  # если выражение ложно, меняем флаг
                break  # выход из цикла по y
        if c == 1:
            break  # выход из цикла по x
    # если выражение истинно для всех x и y, выводим A и прекращаем перебор
    if c == 0:
        print(a)
        break

Ответ: 121

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

Задача 58#62996Максимум баллов за задание: 1

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

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

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

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

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

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

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

Из известной части мы получаем что √A--> 9  и √A--≤ 10  . Отсюда получаем двойное неравентсво 81 < A ≤ 100  . Наименьшее A  удовлетворяющее этому неравенству – 82.

 

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

Для нахождения наименьшего целого A  , при котором выражение

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

тождественно истинно для всех неотрицательных целых x  и y  , используем программный перебор. Идея заключается в том, чтобы проверить все значения A  от 0  до 999  с помощью цикла for. Для каждого A  перебираем все значения x  и y  от 0 до 999 через вложенные циклы for. Если хотя бы для одной пары (x,y)  выражение оказалось ложным, текущее A  отбрасываем. Если выражение истинно для всех (x,y)  , фиксируем найденное минимальное A  и завершаем поиск.

for a in range(1000):
    flag = True  # флаг: True - выражение истинно для всех x и y, False - хотя бы один случай нарушает
    # перебор всех x от 0 до 999
    for x in range(1000):
        # перебор всех y от 0 до 999
        for y in range(1000):
            # проверка выполнения выражения для текущих x, y и A
            if (((y * y <= a) <= (y <= 10)) and ((x <= 9) <= (x * x < a))) == False:
                flag = False  # если выражение ложно, меняем флаг
                break  # выход из цикла по y
        if flag == False:
            break  # выход из цикла по x
    # если выражение истинно для всех x и y, выводим A и прекращаем перебор
    if flag:
        print(a)
        break

Получаем ответ: 82.

Ответ: 82

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

Задача 59#62999Максимум баллов за задание: 1

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

((x − 20 < A )∧ (10 − y < A))∨ ((x+ 4)⋅y > 45)

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

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

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

Преобразуем выражение

                                --45--
((x < A+ 20)∧ (y > 10 − A))∨ (y > (x+ 4))

      45
y > (x+-4)  - это гипербола, под неравенство подходят все точки, которые находятся выше нее. Так как x  и y  целые и положительных, то нам остается перекрыть область под гиперболой, где x ∈ [1;41]  , а y ∈ [1;12]  .

Неравенство x < A + 20  перекрывает все что левее A + 20  , тогда всдствив максимальный x− 41  в него мы перекроем все точки по x  . Отсюда 21 < A  .

Неравенство y > 10 − A  перекрывает все что выше 10− A  , тогда всдствив минимальный y − 1  в него мы перекроем все точки по y  . Отсюда 9 < A  .

Так как необходимо, чтобы оба эти неравенства оба выполнялись, то наименьшее A  , которое походит - 22.

Получаем ответ: 22.

Решение Python:

Для нахождения наименьшего целого A  , при котором выражение

((x − 20 < A )∧ (10 − y < A))∨ ((x+ 4)⋅y > 45)

тождественно истинно для всех положительных целых x  и y  , используем программный перебор. Идея заключается в том, чтобы проверить все значения A  от − 100  до 99  с помощью цикла for. Для каждого A  перебираем все значения x  и y  от 1 до 999 через вложенные циклы for. Если хотя бы для одной пары (x,y)  выражение оказалось ложным, текущее A  отбрасываем. Если выражение истинно для всех (x,y)  , фиксируем найденное минимальное A  и завершаем поиск.

for a in range(-100, 100):
    c = 0  # флаг: 0 - выражение пока истинно для всех x и y, 1 - найдено нарушение
    # перебор всех x от 1 до 999
    for x in range(1, 1000):
        # перебор всех y от 1 до 999
        for y in range(1, 1000):
            # проверка выполнения выражения для текущих x, y и A
            if (((x - 20 < a) and (10 - y < a)) or ((x + 4) * y > 45)) == False:
                c = 1  # если выражение ложно, меняем флаг
                break  # выход из цикла по y
        if c == 1:
            break  # выход из цикла по x
    # если выражение истинно для всех x и y, выводим A и прекращаем перебор
    if c == 0:
        print(a)
        break

Ответ: 22

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

Задача 60#63011Максимум баллов за задание: 1

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

(xy > A) ∧(x > y)∧(x < 8)

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

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

Решение аналитически:

Первым шагом инвертируем известную часть, чтобы определить при каких x  исходное выражение будет истино:

(x ≤ y)∨ (x ≥ 8)

Тепеь определим, для каких крайних значений x  и y  это выражение будет давать ложь. Правая часть будет давать ложь при (x ≥ 8)  , возьмем крайнее значение – 7. Используем это значение для левой части: (7 ≤ y)  . Получаем крайнее значение y  – 6.

Вернемся к неизвестной части и подставим туда найденные крайние значения: (7⋅6 = 42 > A )  , отсюда минимальное значение при котором это выражение будет давать ложь A = 42  .

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

Для нахождения наименьшего целого A  , при котором выражение

   2                       2
((y + y > A ) −→ (y > 8))∧ ((x + 3x > A) −→ (x > 15))

тождественно истинно для всех неотрицательных целых x  и y  , используем программный перебор. Идея заключается в том, чтобы проверить все значения A  от 1 до 499 с помощью цикла for. Для каждого A  перебираем все значения x  и y  от 0 до 999 через вложенные циклы for. Если хотя бы для одной пары (x,y)  выражение оказалось ложным, текущее A  отбрасываем. Если выражение истинно для всех (x,y)  , выводим найденный минимальный A  и прекращаем перебор.

# перебор возможных значений A от 1 до 499
for a in range(1, 500):
    f = 0  # флаг: 0 - выражение истинно для всех x и y, 1 - есть ложное
    # перебор всех x от 0 до 999
    for x in range(1000):
        # перебор всех y от 0 до 999
        for y in range(1000):
            # проверка истинности импликаций для текущих x, y и A
            if (((y*y + y > a) <= (y > 8)) and ((x*x + 3*x > a) <= (x > 15))) == False:
                f = 1  # если выражение ложно, меняем флаг
                break  # выход из цикла по y
        if f == 1:
            break  # выход из цикла по x
    # если выражение истинно для всех x и y, выводим минимальный A и прерываем цикл
    if f == 0:
        print(a)
        break

Получаем ответ: 42.

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