1) введём выражение m & k, обозначающее поразрядную конъюнкцию m и k (логическое «и» между соответствующими битами двоичной записи). определите наибольшее натуральное число a, такое что выражение (x & a ≠ 0) → ((x & 12 = 0) → (x & 49 ≠ 0)) тождественно истинно (то есть принимает значение 1 при любом натуральном значении переменной x)?
102
287
Ответы на вопрос:
Преобразуем (x & a ≠ 0) → ((x & 12 = 0) → (x & 49 ≠ избавившись от импликации. для этого используем замену a→b = ¬a ∨ b также учтем, что ¬(p=0) = p≠0 получаем (x & a = 0) ∨((x & 12 ≠ 0) ∨ (x & 49 ≠ 0)) можно раскрыть скобки (x & a = 0) ∨ (x & 12 ≠ 0) ∨ (x & 49 ≠ 0) 49₁₀ = 110001₂, 12₁₀ = 001100₂, тогда (x & a = 0) ∨ (x & 001100 ≠ 0) ∨ (x & 110001 ≠ 0) чтобы результат поразрядной конъюнкции был ненулевым, нужно чтобы в обоих операндах совпадали единичные биты хотя бы в одном разряде. в нашем случае есть три члена, связанные по "или" и - определить, при каком а выражение всегда будет истинным, т.е. даст хотя бы один единичный бит. понятно, что значение а влияет только на тот случай, когда нули дали и (x & 001100 ≠ 0), и (x & 110001 ≠ 0). когда же такое возможно? x & 001100 = 0, если х имеет вид ? ? где ? - произвольное состояние бита. x & 110001 = 0, если х имеет вид . объединяя эти два случаю получаем, при х=0000? 0 выражение (x & 001100 ≠ 0) ∨ (x & 110001 ≠ 0) даст нули во всех битах. тогда (x & a = 0) должно дать хотя бы один единичный бит. получаем 0000? 0 & а = 0, следовательно, а может иметь вид ? . тогда максимальное значение а равно 111101₂ = 61₁₀
Попробуем раскрыть (x & a ! = 0) -> ((x & 12 == 0) -> (x & 49 ! =0)) (x & a == 0) | ((x & 12 ==0) -> (x & 49 ! = 0)) (x & a == 0) | (x & 12 == 0) | (x & 49 ! = 0) 12 это 001100 49 это 110001 x & 12 == 0 истинно при 3ем и 4ом бите равным 0 в x x & 49 ! = 0 истинно при 1,5 или 6 бите равным 1 в x остались числа, в который 3ий и 4ый бит равны 1, а 1,5,6 равны 0 мы можем записать в 1,5,6 бит в a единички(a=49), и больше нет никаких битов, которые мы можем безболезненно в 1
#define N 10
#include <iostream>
using namespace std;
int main() {
setlocale(LC_ALL, "Rus");
int mas[N];
cout << "Исходный массив: ";
for (int i = 0; i < N; i++) {
cin >> mas[i];
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < N-1; j++) {
if (mas[j] > mas[j + 1]){
int d = mas[j];
mas[j] = mas[j + 1];
mas[j + 1] = d;
}
}
}
cout << "\nОтсортированный массив: ";
for (int i = 0; i < N; i++)
cout << mas[i] << " ";
return 0;
}
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
ирка13727.12.2022 02:09
-
severenok29.01.2023 13:02
-
Katre67855602.08.2022 17:19
-
sehya7222.05.2022 19:33
-
anastasiatim4e205.03.2020 15:24
-
annafa516.01.2021 16:53
-
DoVInterER13.07.2022 21:25
-
olesia17020202.08.2022 19:27
-
mai3106.05.2021 22:33
-
1505Анютка150530.04.2022 05:39
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.