Задание №6 — Алгоритмы и программирование
Ниже приведена программа, записанная на пяти языках программирования.
Алгоритмический язык | Паскаль |
алг нач цел s, t, A ввод s ввод t ввод A если s > A или t > 12 то вывод "YES" иначе вывод "NO" все кон | var A, s, t: 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).
Укажите наименьшее целое значение параметра А, при котором для указанных входных данных программа напечатает «YES» один раз.
Правильный ответ
13
Пояснение
Решение.
Разберём условие задачи. Программа выводит «YES», если истинно хотя бы одно из двух условий, соединённых логическим оператором or (ИЛИ):
1)
2)
Нам нужно найти такое наименьшее целое значение , при котором программа выведет «YES» ровно один раз для девяти данных пар :
(13, 2), (11, 12), (–12, 12), (2, –2), (–10, –10), (6, –5), (2, 8), (9, 10), (1, 13).
Шаг 1. Проверим второе условие .
Посмотрим на вторые числа в парах (значения ) и выясним, в каких случаях это условие уже выполняется независимо от значения :
1) (13, 2): — Ложь
2) (11, 12): — Ложь
3) (–12, 12): — Ложь
4) (2, –2): — Ложь
5) (–10, –10): — Ложь
6) (6, –5): — Ложь
7) (2, 8): — Ложь
8) (9, 10): — Ложь
9) (1, 13): — Истина
Мы видим, что для последней пары (1, 13) условие выполняется. Значит, эта пара всегда будет давать ответ «YES» при любом . Так как по условию задачи нам нужно получить «YES» ровно один раз, это означает, что для всех остальных восьми пар первое условие должно быть ложным.
Шаг 2. Анализируем первое условие .
Чтобы программа вывела «NO» для остальных пар, условие должно быть ложным для всех значений из этих пар. Выпишем значения для первых восьми пар:
13, 11, –12, 2, –10, 6, 2, 9.
Чтобы условие было ложным для всех этих чисел, значение должно быть больше или равно самому большому из этих чисел. Найдём максимальное значение :
.
Следовательно, условие должно быть ложным. Это возможно, если .
Шаг 3. Выбор минимального .
Мы получили ограничение . Наименьшим целым числом, удовлетворяющим этому неравенству, является число 13.
Проверим: если , то для первой пары , условие — ложь. Для остальных пар с меньшими условие тем более будет ложным. Единственным «YES» останется пара (1, 13) за счёт переменной .
Ответ: 13
Источник: ФИПИ