При первом проходе программы
m=0
в цикле for сравниваем Если элемент массива под номером 1 (т.е. число 2) минус 2*m>1 то m равна текущему элементу массива.
т.к. 2-2*0=2 и это больше 0 то значение m становится равным 2
1 проход m=2
При втором проходе цикла фор сравниваем уже второй элемент массива, т.е.
Dat[2]-2*m>1
6-2*2>1
2>1
Условие выполняется значит значение m на 2 проходе равно 6
при дальнейших проходах цикла for мы больше не получим значений больше 1 т.к. текущее m=6, т.е. из элементов массива мы будем вычитать 12, т.е. ни одного положительного числа мы не получим, т.е. условие if не выполнится ни разу и значение m не изменится
Ответ m=6
Все просто, как я вижу по входным данным у тебя число А это:
1010
А число Б это:
1001
Черта над числом, значит "отрицание", проще говоря, тебе нужно инвертировать числа, то есть полностью поменять цифры на противоположные, т.к. мы в двоичной системе, у нас существуют только две цифры, это 0 и 1. Следовательно:
Отрицание А это:
0101
Отрицание Б это:
0110
Дальше переходим к действиям:
У тебя написанно F = !A ∩ !B (восклицательный знак - значит отрицание)
∩ - это конъюнкция, это логическая операция, называется "Логическое И"
Она проводится между двумя цифрами в двоичной системе в данном случаи.
Есть таблица истинности для бинарной конъюнкции, эта таблица нам поможет посчитать что да как.
У нее есть входные данные и что ты получишь на выходе. Вот она:
a ║0 | 1 | 0 | 1
b ║0 | 0 | 1 | 1
a ∩ b ║ 0 | 0 | 0 | 1
Мы ориентируемся по входным данным и смотрим что получится.
Как видишь, конъюнкция всегда тебе выдаст ноль, кроме того случая, когда оба числа равны 1.
Посмотрим что у нас получится:
0101 - первое число
0110 - второе число
0100 - коньюнкция двух чисел, что мы получили выше.
Я бы посчитал и второе, но там нет значения X и Y, на фотографии, если напишешь, я отвечу в коментах, но объясню как решать тут.
Твое выражение:
F = !(X ∩ !Y)∪X
Тут все так же елементарно.
1. Записываем из Y новый !Y, это число, где все цифры меняешь на противоположные.
2. После записываешь конъюнкцию X и Y, как я объяснял выше, то есть это число (просто запиши в столбик, сначала X, потом Y, а под ними пиши конъюнкцию), сравни соответствующие цифры, в вверхнем и нижнем числе, если они равны обе 1, то и в конъюнкции будет 1, в остальных случаях (1 и 0, 0 и 1, 0 и 0), будет 0.
3. У нас отрицание над этими скобками, по этому изменяем в полученном числе все цифры на противоположные
4. У нас есть отрицание X, считаем его как и Y из пункта 1.
5. Из полученных чисел в пунктах 3 и 4 находим конъюнкцию, она считается пхоже на дизъюнкцию, но у неё другая таблица истинности:
В её случаи 0 будет только если совпадают 2 нуля, а во всех других случаях (1 и 0, 0 и 1, 1 и 1), будет 1, то есть посути, число не изменится, пишешь везде, егде есть единицы - 1, в остальных случаях - 0.
Вот таблица:
a ║0 | 1 | 0 | 1
b ║0 | 0 | 1 | 1
a ∪ b ║ 0 | 1 | 1 | 1
Я придумаю случайный X и Y, ну и на их примере покажу, о чем я говорил. Тебе нужно будет посчитать по заданию или написать свои настоящие X и Y сюда. Итак, приступим:
Пусть X = 1011, а Y = 1000, тогда:
!Y = 0111
X ∩ !Y = 1011 ∩ 0111 = 0011
!(X ∩ !Y) = 1100
!X = 0100
!X ∩ !Y) ∪ !X = 1100
Вот и всё, это не сложно :)
<em>// PascalABC.NET 3.3, сборка 1634 от 14.02.2018</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
begin
var a:=ArrRandom(ReadInteger('n='),0,9); a.Println;
Writeln('Сумма двоек равна ',a.Where(t->t=2).Sum)
end.
<u>Пример</u>
n= 15
2 6 6 2 8 5 3 1 8 0 0 2 8 3 6
Сумма двоек равна 6