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