
Программа с условным оператором
Штана Альберт Игоревич
В этой статье будет разобрано задание 6.
Рассмотрим типовые задачи из шестого задания ОГЭ по информатике.
Данное задание относится к базовому уровню сложности.
Время выполнения задания ≈ 4 минуты.
В этом задании нужно проанализировать программу на одном из языков программирования и ответить на поставленный вопрос. Для упрощения описания задач — будем рассматривать условие задачи и решение только на языке программирования Python.
Ниже приведена программа, записанная на 5 языках программирования. Смотрим только на Python. Идентичная программа и на других языках.
s = int(input())
t = int(input())
if (s > 8) or (t > 8):
print("YES")
else:
print("NO")
Было проведено 9 запусков программы, при которых в качестве значений переменных вводились следующие пары чисел (s, t): (5, 6); (9, 5); (6, 8); (10, 9); (–9, –10); (–9, 10); (–10, 9); (8, 8); (8, 6).
Сколько было запусков, при которых программа напечатала «YES»?
Разберёмся построчно что тут в программе происходит 😃
Чтобы программа напечатала "YES", нужно, чтобы в паре было хотя бы одно число, которое больше 8, т.к. в условии стоит союз ИЛИ (or). Подходят пары: (9, 5); (10, 9); (-9, 10); (–10, 9). Всего получается 4 запуска.
Ответ: 4
Ниже приведена программа, записанная на 5 языках программирования. Смотрим только на Python.
s = int(input())
t = int(input())
if (s < 5) or (t > 5):
print("YES")
else:
print("NO")
Было проведено 9 запусков программы, при которых в качестве значений переменных вводились следующие пары чисел (s, t): (2, 5); (5, 2); (4, 4); (2, -2); (3, 1); (8, 3); (9, -7); (7, 7); (4, 6).
Сколько было запусков, при которых программа напечатала «YES»?
Попробуете построчно разобрать что тут в программе происходит 😏 (как по примеру выше ☝)
Чтобы программа напечатала "YES", нужно, чтобы в паре первое число s было меньше 5 ИЛИ второе число t было больше 5, или оба условия выполнились одновременно.
Подходят пары: (2, 5); (4, 4); (2, -2); (3, 1); (7, 7); (4, 6); Всего получается 6 запусков.
Ответ: 6
Ниже приведена программа, записанная на 5 языках программирования. Смотрим только на Python.
s = int(input())
t = int(input())
if (s >= 8) and (t >= 10):
print("YES")
else:
print("NO")
Было проведено 9 запусков программы, при которых в качестве значений переменных вводились следующие пары чисел (s, t): (6, 8); (9, 10); (9, 5); (-10, 9); (5, 6); (9, -10); (10, 9); (8, 10); (17, 10).
Сколько было запусков, при которых программа напечатала «YES»?
В этот раз в условии стоит союз И (and). В этом случае, чтобы распечаталось YES, нужно, чтобы два условия одновременно сработали. Т.е. первое число должно быть s >= 8, а второе t >= 10, тогда мы пару будем засчитывать.
Подходят пары: (9, 10); (8, 10); (17, 10); Всего получается 3 запуска.
Ответ: 3
Ниже приведена программа, записанная на 5 языках программирования. Смотрим только на Python.
s = int(input())
t = int(input())
if (s > 6) and (t < 7):
print("YES")
else:
print("NO")
Было проведено 9 запусков программы, при которых в качестве значений переменных вводились следующие пары чисел (s, t): (7, 3); (2, 7); (6, 10); (5, 3); (5, 4); (-11, 4); (-8, 9); (7, 3); (9, 1).
Сколько было запусков, при которых программа напечатала «NO»?
В подобных случаях удобно всё равно считать сколько раз распечатается "YES", а потом вычислить сколько раз будет распечатано "NO".
В условии стоит союз И. Значит, первое число должно s быть больше 6 и одновременно с этим второе число t должно быть меньше 7.
Подходят пары: (7, 3); (7, 3); (9, 1); Всего получается 3 запуска.
Но нам нужно было найти, сколько раз выведется "NO". Поэтому ответ будет 9 - 3 = 6.
Ответ: 6
Ниже приведена программа, записанная на 5 языках программирования. Смотрим только на Python.
s = int(input())
t = int(input())
if s // 2 == t:
print("YES")
else:
print("NO")
Было проведено 9 запусков программы, при которых в качестве значений переменных вводились следующие пары чисел (s, t): (1, 1); (8, 4); (14, 10); (20, 1); (7, 3); (10, 5); (10, 2); (4, 1); (1, 0).
Сколько было запусков, при которых программа напечатала «NO»?
Двойной слеш в Python обозначает целочисленное деление. Как это работает ? Например, 5:2 = 2,5, но если мы сделаем 5 // 2 = 2. Т.е. дробная часть просто отбрасывается. Не округляется, а просто отбрасывается. Или другими словами происходит округление в меньшую сторону.
В нашей программе будет печататься "YES", когда применяется целочисленное деление на 2 к первому числу, и получается второе число. Посмотрим в каких парах будет выведено "YES".
Это пары: (8, 4); (7, 3); (10, 5); (1, 0). Четыре запуска. Значит, "NO" распечатается в 5 (9 - 4) случаях.
Ответ: 5
Ниже приведена программа, записанная на 5 языках программирования. Смотрим только на Python.
s = int(input())
k = int(input())
if s % 7 == k:
print("YES")
else:
print("NO")
Было проведено 9 запусков программы, при которых в качестве значений переменных вводились следующие пары чисел (s, k): (2, 2); (7, 0); (14, 10); (22, 1); (10, 3); (12, 1); (9, 2); (5, 1); (2, 5).
Сколько было запусков, при которых программа напечатала «YES»?
Операция % обозначает остаток от деления. Например, если выполнить 5 % 2, то получится 1. Ведь 5 : 2 = 2 (остат. 1). Т.е. двойка "влезла" в пятёрку два раза, и осталась одна единица.
Здесь нужно взять первое число s поделить на 7 и найти остаток. Если остаток будет равен второму числу k, то программа распечатает "YES", иначе "NO".
(2, 2) 2 % 7 = 2 Подходит
(7, 0) 7 % 7 = 0 Подходит
(14, 10) 14 % 7 = 0 Не подходит
(22, 1) 22 % 7 = 1 Подходит
(10, 3) 10 % 7 = 3 Подходит
(12, 1) 12 % 7 = 5 Не подходит
(9, 2) 9 % 7 = 2 Подходит
(5, 1) 5 % 7 = 5 Не подходит
(2, 5) 2 % 7 = 2 Не подходит
Ответ: 5
Ниже приведена программа, записанная на 5 языках программирования. Смотрим только на Python.
s = int(input())
t = int(input())
A = int(input())
if s > A or t > 12:
print("YES")
else:
print("NO")
Было проведено 9 запусков программы, при которых в качестве значений переменных вводились следующие пары чисел (s, t): (13, 2); (11, 12); (-12, 12); (2, -2); (-10, -10); (6, -5); (2, 8); (9, 10); (1, 13).
Укажите наименьшее целое значение параметра A, при котором при указанных входных данных программа напечатает "YES" 3 раза.
В условии стоит союз ИЛИ(or). Посмотрим, сколько пар подойдёт, если обращать внимание только на переменную t. Она должна быть больше 12. Тогда получается одна пара: (1, 13).
Ещё нужно набрать 2 пары. Это сделаем с помощью переменной s. Понимаем, что A должно быть равно 10, тогда ещё две пары подойдут по первому числу (13, 2) и (11, 12).
Но в задаче нужно найти A – как можно меньше. При значении 9 так же останутся три пары, но A будет ещё меньше. Значит, ответ будет 9. Ели попробовать взять A = 8, то подойдёт ещё одна пара (9, 10) — а это нам не подходит(их всего будет уже 4).
Ответ: 9
Ниже приведена программа, записанная на 5 языках программирования. Смотрим только на Python.
s = int(input())
t = int(input())
A = int(input())
if s > A or t > 12:
print("YES")
else:
print("NO")
Было проведено 9 запусков программы, при которых в качестве значений переменных вводились следующие пары чисел (s, t): (13, 2); (11, 12); (-12, 12); (2, -2); (-10, -10); (6, -5); (2, 8); (9, 10); (1, 13).
Укажите количество целых значений параметра A, при которых при указанных входных данных программа напечатает "NO" 5 раз.
Будем отталкиваться от количества "YES".
Вновь найдём количество пар, которые печатают "YES" по второму числу, в независимости от параметра A. Получается одна пара (1, 13).
Нужно выбрать параметр A таким, чтобы распечатали "YES" ещё 3 пары. Здесь уже ориентируемся на первое число s.
Выберем A = 8. Тогда распечатают "YES" ещё три пары: (13, 2); (11, 12); (9, 10). Это наибольшее значение A, при котором распечатается пять раз "NO". Но так же 5 раз "NO" будет напечатано и при A = 7, 6. При A = 5 добавляется ещё одна пара (6, -5), при которой будет напечатано "YES" — это уже нам не подходит по условию задачи.
В итоге подошли 3 значения А = 8,7,6.
Ответ: 3
Ниже приведена программа, записанная на 5 языках программирования. Смотрим только на Python.
s = int(input())
t = int(input())
A = int(input())
if s > 10 or t > A :
print("YES")
else:
print("NO")
Было проведено 9 запусков программы, при которых в качестве значений переменных вводились следующие пары чисел (s, t): (1, 2); (11, 2); (1, 12); (11, 12); (-11, -12); (-11, 12); (-12, 11); (10, 10); (10, 5).
Укажите наименьшее целое значение параметра A, при котором при указанных входных данных программа напечатает "NO" 3 раза.
Найдём сколько раз программа напечатает "YES", исходя из первого числа s. Получается только две пары: (11, 2) и (11, 12). Значит, 7 раз "NO". Нужно увеличивать количество раз, которое программа напечатает "YES".
Попробуем взять A = 6. В группу "YES" передут ещё 4 пары: (1, 12), (-11; 12), (-12; 11), (10; 10).
В группе "NO" как раз останутся три пары: (1, 2), (-11, -12), (10, 5).
Проверим, является ли число 6 для переменной A минимальным.
Попробуем A = 5. Получается, три вышеперечисленные пары остаются в группе "NO". Последняя пара тоже не распечатает "YES", т.к. неравенство строгое.
Последняя проверка будет при A = 4. Последняя пара уже будет печатать "YES" — условие задачи перестаёт выполняться. Значит минимальное значение А — предыдущее равное 5.
Ответ: 5
Ниже приведена программа, записанная на 5 языках программирования. Смотрим только на Python.
s = int(input())
t = int(input())
A = int(input())
if (s > A) or (t > 12):
print("YES")
else:
print("NO")
Было проведено 9 запусков программы, при которых в качестве значений переменных вводились следующие пары чисел (s, t): (13, 2); (11, 12); (–12, 12); (2, –2); (–10, –10); (6, –5); (2, 8); (9, 10); (1, 13).
Укажите наибольшее целое значение параметра A, при котором для указанных входных данных программа напечатает "NO" ровно 5 раз.
В условии программа напечатает "YES" если первое число s будет больше A или второе число t больше 12. Сначала проверим второе условие по второму числу t. Сколько раз программа не зависимо какое будет число A точно выведет нам "YES", а не "NO". Это только в одном случае, а именно в девятом запуске программы, с парой (1, 13) у нас независимо от A будет выведено "YES". Все оставшиеся случаи(первых восемь) нужно подобрать число A, которое должно быть максимально чтобы программа вывела ровно 5 раз "NO" в остальных трёх (+1 последний точно YES) случаях она должна будет вывести "YES".
Начнём с максимального числа которое мы видим по запускам пар s, t. Число 13 было максимальным его и возьмём, чтобы проверить пары подставив 13 в качестве A. Подставим 13 в качестве A на каждый вариант запуска, увидим что во всех запусках программы, если бы A всегда равнялось 13 мы получили бы 8 раз "NO", а нам нужно 5 раз. Значит теперь уменьшаем A на 1 и снова проверяем теперь уже с числом 12 все варианты s и t по условию. Когда A равнялось бы 12 мы бы получили только в первом случае "YES" и в последнем случае тоже "YES". Всего "NO" было бы показано нам 9 - 2 = 7 раз, а нам опять же нужно 5 раз увидеть "NO" и не больше. Продолжаем уменьшать "NO" на единицу проверяя 11, затем 10 и т.д. пока не придём наконец к 8. При условии если A равно 9 мы бы получили "NO" в третьем, четвертом, пятом, шестом, седьмом и восьмом случаях, что равняется 6 показам "NO". Проверка числа 8 в качестве A и даст нам ответ, потому что исключается восьмой случай в отличии если бы A равнялось 9.
Ответ: 8