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