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