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

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

Задача 1#63682

Обозначим через Q%m  ==  n  утверждение «Натуральное число Q  при делении на натуральное число m  даёт остаток n  ».

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

(x < A )∨ (y < A) ∨((x∗ y)%3 == 0)∨ (4x+ 2y ⁄= 150)

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

Показать ответ и решение
for A in range(1000):
    flag = True
    for x in range(1000):
        for y in range(1000):
            if not((x<A) or (y<A) or ((x*y)%3==0) or (4*x+2*y!=150)):
                flag = False
                break
        if not(flag):
            break
    if flag:
        print(A)
        break

Ответ: 26

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

Задача 2#33605

Обозначим через ДЕЛ(n  , m  ) утверждение «натуральное число n  делится без остатка на натуральное число m  ».

На числовой прямой дан отрезок B = [50,70]  . Для какого наибольшего натурального числа A  формула

¬ДЕ Л(x,A) → ((x ∈ B) → ¬Д ЕЛ (x,15))

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

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

Решение 1 (ручками):
Система для врагов:

(
|||x ||... A
|{
|x ∈ B
|||(  ..
 x . 15

Враги мечтают, чтобы x ∈ [50;70]  B  ) и при этом они делились на 15  . Таким образом, единственный подходящий x  на отрезке [50;70]  , делящийся на 15  , равен 60  . Тогда мечты врагов такие: «Вот бы x  , равный 60  , не делился на A  ».

Друзья говорят: «Нет, 60  делится на A  ». Максимальное A  равно максимальному делителю числа 60  , то есть Amax = 60  . Это и есть ответ.

 

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

def f(x, A):
    B = [50, 70]
    return (x % A != 0) <= (inn(x, B) <= (x % 15 != 0))

def inn(x, B):
    return B[0] <= x <= B[1]

maxim = 0
for A in range(1, 300):
    flag = True
    for x in range(1, 500):
        if not(f(x, A)):
            flag = False
            break
    if flag:
        maxim = A
print(maxim)

Ответ: 60

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

Задача 3#29734

Обозначим через ДЕЛ(n  , m  ) утверждение «натуральное число n  делится без остатка на натуральное число m  ».

На числовой прямой дан промежуток A  и множество S = {23,27,45,46,47,67} .

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

                                                                -------
((¬Д ЕЛ(x,3)∧ (y ∕∈ S)) → ((x > 7) → (y > 11)))∨ (x⋅y ≤ 76)∨(x ∕∈ A)∨ (y ∈ A)

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

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

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

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

(
||| x ||... 3
||||
|||| y ∕∈ S
|||| x > 7
|{
| y ≤ 11
||||
|||| x⋅y > 76
|||| x ∈ A
|||(
  y ∈ A

Враги мечтают, чтобы x > 7  , y ≤ 11  и x ⋅y > 76  . Тогда при xmin = 8  единственные y  , которые смогут взять враги, чтобы условие x⋅y > 76  выполнялось, будут равны 10  и 11  . Заметит, что при увеличении x  враги смогут брать больше вариантов y  , но всегда максимальное значение ymax = 11  . Все натуральные y <= ymax  не принадлежат S  , значит условие y ∕∈ S  автоматически выполнено. Мечты врагов такие: «Вот бы y ∈ A  ».

Друзья говорят: «Нет, y ∕∈ A  ». Тогда при условии, что правая граница отрезка A  не больше 50  , Amax = (11,50]  (чтобы даже ymax ∕∈ A  ), а его максимальная длина равна 50 − 11 = 39  .

 

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

def inn(x, A):
    return A[0] <= x <= A[1]

def f(x, y, A):
    S = {23, 27, 45, 46, 47, 67}
    return (((x % 3 != 0) and (not y in S)) <= ((x > 7) <= (y > 11))) \
        or (x * y <= 76) or (not inn(x, A)) or (not inn(y, A))

n = 5
ans = 0
for a in range(1 * n, 50 * n):
    for b in range(a, 50 * n + 1):  # + 1 чтобы проверить саму точку b
        A = [a / n, b / n]
        flag = True
        for x in range(1, 100):
            for y in range(1, 15):
                if not f(x, y, A):
                    flag = False
                    break
            if not flag:
                break
        if flag:
            ans = max(ans, A[1] - A[0])
print(ans)

Ответ: 39

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

Задача 4#29733

Обозначим через ДЕЛ(n  , m  ) утверждение «число n  делится без остатка на число m  ». Для дробных чисел это означает, что результатом деления n  на m  является целое число.

На числовой прямой даны отрезки P = [15,23]  , Q = [17,34]  . Найдите максимальную длину промежутка A  , такого что выражение

                             ------- -------            -------
(¬ (Д ЕЛ (x,4.5)) ∧¬ (Д ЕЛ (x,3))∨ (x ∈ Q) ∨(x ∈ A ))∧((x ∈ P )∨ (x ∈ A))

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

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

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

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

⌊  (
   {x ∕∈ P         (
||  (              |||| x ∈ A
||   x ∈ A         |||| ⌊   x∈∕P
|| (|x ∈ Q          ||{ |(
|| ||||           ⇒     ||||| x ∈ Q
|| |{x ∈ A          |||| ||{ ⌊  .
|| |⌊   ..          |||| |⌈|| ⌈ x.. 3
|⌈ ||||⌈ x . 3        ||(  |(    ..
  |(  x ... 4.5            x . 4.5

Рассмотрим мечты врагом из совокупности отдельно:

1)  Враги хотят, чтобы x ∕∈ P  , то есть x ∈ [1,15)∪ (23,+ ∞ )  , но так как мы берем только натуральные иксы, то x ∈ [1,14]∪ [24,+∞ )  .

2)  Враги хотят, чтобы x ∈ Q  и x  был кратен 4.5  или 3  . Тогда они будут брать x  из промежутка [17,34]  , кратные 4.5  или 3  , и по условию нас интересуют натуральные иксы, значит x ∈ {18,21,24,27,30,33} .

Так как условия 1)  и 2)  указаны в совокупности, значит врагам подойдут иксы, находящиеся в объединении множеств первого и второго условия.

Поэтому враги мечтают, чтобы x ∈ [1,14]∪{18} ∪{21} ∪[24,+∞ )  и чтобы x ∈ A  .

 

Друзья говорят: «Нет, все эти иксы не принадлежат A  ». Тогда друзья могут взять, например, A = (14,18)  или A = (18,21)  или A = (21,24)  . Наибольшую длину имеет A = (14,18)  , его длина = 4  .

 

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

def inn(x, A):
    return A[0] <= x <= A[1]
def f(x, A):
    P = [15, 23]
    Q = [17, 34]
    return (((x % 4.5 != 0) and (x % 3 != 0) or (not inn(x, Q)) \
         or (not inn(x, A))) and (inn(x, P) or (not inn(x, A))))
ans, n = 0, 15
borders = [0 ,0]
for a in range(1 * n, 70 * n):
    for b in range(a, 70 * n):
        A = [a / n, b / n]
        flag = True
        for x in range(1, 70 * n):  # только натуральные
            if not f(x, A):
                flag = False
                break
        if flag:
            if A[1] - A[0] > ans:
                ans = A[1] - A[0]
                borders[0] = A[0]
                borders[1] = A[1]
print(borders)
print(ans)

Видим, что программа вывела промежуток [14.066,17.933]  и его длину ≈ 3.866  .

Значит, ответом является промежуток с дробными границами, левая граница которого стремится к 14  , а правая к      18  , тогда длина стремится к 4  .

Ответ: 4

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

Задача 5#29732

Обозначим через ДЕЛ(n, m) утверждение «натуральное число n делится без остатка на натуральное число m». Обозначим через m&n  поразрядную конъюнкцию неотрицательных целых чисел m  и n  .

Так, например, 14&5 = 1110 &0101 = 0100  = 4
           2     2      2  .

На числовой прямой дан отрезок Q = [12;48]  и множество S = {45,23,67} .

Определите наименьшее натуральное число A  , такое что выражение

(¬Д ЕЛ(x,3)∧ (x∈∕S)) → ((|x− 50| ≤ 7) → (x ∈ Q ))∨ (x&A = 0)

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

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

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

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

(
||| x ||... 3
||||
|||{ x ∕∈ S
  |x− 50| ≤ 7
|||
|||| x ∕∈ Q
|||(
  x&A  ⁄= 0

Разберём мечты врагов:

1)  |x − 50| ≤ 7  , то есть x ∈ [43;57]  .

2)  x∈∕Q  , то есть x ∈ [49,57]  (объединяя с первым условием)

3)  x∈∕S  , то есть x ∈ [49,57]  (предыдущие два условия уже учли третье)

4)  x| ...| 3  , то есть x ∈ {49,50,52,53,55,56} (учитывая три предыдущих условия)

Теперь рассмотрим последнюю мечту: x&A  ⁄= 0  . Поскольку мы знаем все иксы, которые будут выбирать враги, переведём их в двоичную систему счисления:

4910 = 1100012

5010 = 1100102

5210 = 1101002

5310 = 1101012

5510 = 1101112

5610 = 1110002

Таким образом, мечты врагов такие: «Вот бы на любом из последних шести разрядов в двоичной записи у числа    A  была единичка».

Друзья говорят: «Нет, любая из последних шести цифр числа A  в двоичной записи равна нолику». Таким образом, Amin = 10000002 = 26 = 64  .

 

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

def inn(x, A):
    return A[0] <= x <= A[1]

def f(x, A):
    S = {45, 23, 67}
    Q = [12, 48]
    return (((x % 3 != 0) and (not (x in S))) <=
    ((abs(x - 50) <= 7) <= (inn(x, Q))) or (x & A == 0))

for A in range(1, 1000):
    flag = True
    for x in range(-100, 1000):
        if not f(x, A):
            flag = False
            break
    if flag:
        print(A)
        break

Ответ: 64

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

Задача 6#29731

Обозначим через ДЕЛ(n, m) утверждение «натуральное число n делится без остатка на натуральное число m». Обозначим через m&n  поразрядную конъюнкцию неотрицательных целых чисел m  и n  .

На числовой прямой даны отрезки Q = [12;48]  и P = [32,64]  .

Определите наименьшее натуральное число A  , такое что выражение

Д ЕЛ (x,5)∨ (x ∕∈ Q )∨ (x &A = 0)∨ ((x ∈ P) → (|x − 31| ≥ 17))

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

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

Решение 1 (ручками):
Система для врагов:

(
||| x|| ... 5
||||
|||{ x ∈ Q
  x&A ⁄= 0
|||
|||| x ∈ P
|||(
  |x − 31| < 17

Раскроем последнее неравенство системы: x− 31 < 17  и x− 31 > − 17  , то есть x < 48  и x > 14  , то есть x ∈ (14;48)  . Враги мечтают, чтобы x ∈ [32;48]  P  и в Q  ), x ∈ (14;48)  и при этом они не делились на 5  . Таким образом, чтобы победить, враги будут брать только следующие иксы: {32,33,34,36,37,38,39,41,42,43,44,46,47} . Также враги мечтают, чтобы x&A ⁄= 0  . Максимальный икс, который могут взять друзья, равен 47  , то есть 1011112  , а минимальный икс = 32  , то есть 1000002  . Отсюда заметим, что ни один икс, подходящий врагам, не содержит единичку в пятом с конца разряде в двоичной записи. Тогда мечты врагов такие: «Вот бы у числа A  была единичка в первом, втором, третьем, четвёртом или шестом с конца разряде в двоичной записи».

Друзья говорят: «Нет, число A  не содержит единичку ни на одном из этих разрядов». Минимальное A  , которое могут взять друзья, равно 100002  , то есть Amin = 16  .

 

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

def f(x, A):
    Q = [12, 48]
    P = [32, 64]
    return ((x%5 == 0) or (not inn(x, Q)) or (x & A == 0) or ((inn(x, P)) <= (abs(x - 31) >= 17)))

def inn(x, P):
    return P[0] <= x <= P[1]

for A in range(1, 1000):
    flag = True
    for x in range(-1000, 1000):
        if not f(x, A):
            flag = False
            break
    if flag:
        print(A)

Ответ: 16

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

Задача 7#29730

Обозначим через ДЕЛ(n  , m  ) утверждение «натуральное число n  делится без остатка на натуральное число m  ». Обозначим через m&n  поразрядную конъюнкцию неотрицательных целых чисел m  и n  .

Определите максимальное значение A  , такого что выражение

(ДЕ Л(x,3)∧ ДЕЛ (x,7)) → ((x &13 ⁄= 0) ∨(x&32 = 0)∨ (A⋅x ≤ 120834))

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

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

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

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

(
||| x ... 3
||||   .                 (  .
|||| x .. 7               |||| x.. 21
||{                     ||{ x ≥ 1-00-0
  x&13 = 0        ⇒              2
|||| x&32 ⁄= 0            |||| A ⋅x > 120834
||||                     ||(
|||| A ⋅x > 120834         x ≤ 1000
|( x ≤ 1000

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

Враги мечтают, чтобы x  делился на 21  и был меньше или равен 1000  , а также соответствовал маске 1  _00  _02  (исходя из маски понимаем, что числа будут четные), значит будут брать x  из диапазона {42,84,126,168,210,...,840,882,924,966  }, которые еще должны соответствовать маске 1  _00  _02  .

Тогда друзья говорят, что A ⋅x ≤ 120834  . Максимальное x  , которое будут брать враги — 882  (удовлетворяет всем условиям), значит A ≤ 120834= 137
     882  .

 

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

def f(x):
    return (((x % 3 == 0) and (x % 7 == 0)) <= \
        (((x & 13 != 0) or (x & 32 == 0)) or (A * x <= 120834)))

ans = 0
for A in range(1, 1000):
    flag = True
    for x in range(1, 1001):
        if not f(x):
            flag = False
            break
    if flag:
        ans = max(ans, A)
print(ans)

Ответ: 137

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

Задача 8#25559

Обозначим через Q%m  ==  n  утверждение «Натуральное число Q  при делении на натуральное число m  даёт остаток n  ».

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

(x < A )∨ (y < A) ∨((x∗ y)%4 == 0)∨ (2x+ 3y ⁄= 100)

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

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

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

Запишем, чего хотят враги:

(
|||| x ≥ A
||{ y ≥ A

|||| (x⋅y)%4 ⁄= 0
||(
  2x +3y = 100

Найдём, при каких значениях x  и y  будут выполняться последние два условия ( (x⋅y)%4 ⁄= 0  и 2x + 3y = 100  ):

|---|---|
|-x-|-y-|
|-5-|30-|
|11 |26 |
|---|---|
|17-|22-|
|23-|18-|
|29 |14 |
|---|---|
|35-|10-|
|41-|-6-|
|47 | 2 |
--------

Враги хотят, чтобы x ≥ A  и y ≥ A  . Тогда максимальное A  , при котором враги смогут победить, будет равно    18  (при x = 23  и y = 18  ).

Тогда друзья говорят: «Нет, 18 < A  , то есть Amin = 19  ».

 

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

    for A in range(1000):
    flag = True
    for x in range(1000):
        for y in range(1000):
            if not((x<A) or (y<A) or ((x*y)%4==0) or (2*x+3*y!=100)):
                flag = False
                break
        if not(flag):
            break
    if flag:
        print(A)
        break
 

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