29 декабря 2024 г.

Логика. Задание № 15 "Задачи с битовыми логическими операциями"

Введём выражение M & K, обозначающее поразрядную конъюнкцию M и K (логическое «И» между соответствующими битами двоичной записи). Определите наименьшее натуральное число A, такое что выражение

(X & 112 ≠ 0 ∨ X & 86 ≠ 0) → (X & 65 = 0 → X & А ≠ 0)

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

Решение:

1) В языке программирования Python есть логическая операция умножения над отдельными битами – обозначается символом &.

2) Напишем программу на Python

'''(X & 112 ≠ 0 ∨ X & 86 ≠ 0) → (X & 65 = 0 → X & А ≠ 0) = 1'''

for a in range(1,100):

  flag=True

  for x in range(1,1000):

    if not ( (x&112!=0 or x&86!=0) <= ((x&65==0) <= (x&a!=0)) ):

      flag=False

      break

  if flag: 

    print(a)

    break

Ответ: 54

Комментариев нет:

Отправить комментарий