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