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