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