Решение: Подсчёт срабатываний условия
Ниже приведена программа, записанная на пяти языках программирования. Программа вводит целые числа $s$ и $t$. Если не выполняется условие $(s \geq 2)$ и $(t < 5)$, программа печатает «YES», иначе печатает «NO».
Было проведено 9 запусков программы, при которых в качестве значений переменных $s$ и $t$ вводились следующие пары чисел: $(12, 5)$; $(5, 3)$; $(-4, 1)$; $(2, -5)$; $(5, -7)$; $(10, 3)$; $(18, 6)$; $(3, 0)$; $(2, 5)$.
Сколько было запусков, при которых программа напечатала «YES»?
Решение по шагам
3 шагаОбозначим условие в скобках через $A$: $A = (s \geq 2) \land (t < 5)$. Программа печатает «YES», когда истинно отрицание этого условия.
$$\neg A = \neg\big((s \geq 2) \land (t < 5)\big)$$По закону де Моргана программа печатает «YES», если $s < 2$ или $t \geq 5$.
$$\neg\big((s \geq 2) \land (t < 5)\big) = (s < 2) \lor (t \geq 5)$$Проверяем пары: $(12, 5)$ — YES; $(5, 3)$ — NO; $(-4, 1)$ — YES; $(2, -5)$ — NO; $(5, -7)$ — NO; $(10, 3)$ — NO; $(18, 6)$ — YES; $(3, 0)$ — NO; $(2, 5)$ — YES.
$$1 + 1 + 1 + 1 = 4$$Где здесь ошибаются
Забывают, что оператор not меняет результат всего составного условия.
Считают условие $s \geq 2$ или $t < 5$ вместо отрицания условия с операцией «и».
Не учитывают граничные значения $s = 2$ и $t = 5$.