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