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