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