Задание №6 — Алгоритмы и программирование
Ниже приведена программа, записанная на пяти языках программирования.
Алгоритмический язык | Паскаль |
алг нач цел s, t, A ввод s ввод t ввод A если s > A или t > 12 то вывод "YES" иначе вывод "NO" все кон | var s, t, A: integer; begin readln(s); readln(t); readln(A); if (s > A) or (t > 12) then writeln('YES') else writeln('NO') end. |
Бейсик | Python |
DIM s, t, A AS INTEGER INPUT s INPUT t INPUT A IF s > A OR t > 12 THEN PRINT "YES" ELSE PRINT "NO" ENDIF | s = int(input()) t = int(input()) A = int(input()) if (s > A) or (t > 12): print("YES") else: print("NO") |
C++ | |
#include <iostream> using namespace std; int main() { int s, t, A; cin >> s; cin >> t; cin >> A; if (s > A || t > 12) cout << "YES" << endl; else cout << "NO" << endl; return 0; } | |
Было проведено 9 запусков программы, при которых в качестве значений переменных s и t вводились следующие пары чисел:
(13, 2); (11, 12); (–12, 12); (2, –2); (–10, –10); (6, –5); (2, 8); (9, 10); (1, 13).
Укажите наибольшее целое значение параметра А, при котором для указанных входных данных программа напечатает «NO» два раза.
Правильный ответ
1
Пояснение
Решение.
Разберём условие задачи. Программа выводит «YES», если выполняется хотя бы одно из двух условий: или . В противном случае программа выводит «NO».
Нам нужно найти такое наибольшее целое значение , при котором программа выведет «NO» ровно два раза. Программа выводит «NO», когда логическое выражение в условии ложно. Это происходит, когда одновременно выполняются два отрицания: И .
Проанализируем данные пары чисел и проверим вторую часть условия ():
1) : (условие ложно)
2) : (условие ложно)
3) : (условие ложно)
4) : (условие ложно)
5) : (условие ложно)
6) : (условие ложно)
7) : (условие ложно)
8) : (условие ложно)
9) : (условие истинно)
В девятом запуске условие истинно, значит, программа всегда напечатает «YES» независимо от . Остаётся 8 запусков, в которых результат зависит только от условия . Чтобы программа напечатала «NO», должно выполняться .
Выпишем значения для оставшихся 8 запусков в порядке возрастания: .
Нам нужно, чтобы условие выполнилось ровно для двух пар. Это возможно только для двух самых маленьких значений :
Чтобы именно эти два значения (и никакие больше) удовлетворяли условию , параметр должен быть больше или равен , но строго меньше следующего по величине значения , которое равно .
То есть: .
Наибольшее целое число в этом промежутке — это .
Проверим: при , условие выполняется для и (2 раза). Для остальных () условие ложно, и программа выведет «YES».
Ответ: 1
Источник: ФИПИ