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