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