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