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