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