Все статьи по ОГЭ
22 окт. 2024 г. - 18 мин. чтения
ОГЭ Задание 6

ОГЭ Задание 6

Программа с условным оператором

@ashtana

Штана Альберт Игоревич

Типы заданий № 6

В этой статье будет разобрано задание 6.

Рассмотрим типовые задачи из шестого задания ОГЭ по информатике.

Данное задание относится к базовому уровню сложности.

Время выполнения задания ≈ 4 минуты.

В этом задании нужно проанализировать программу на одном из языков программирования и ответить на поставленный вопрос. Для упрощения описания задач — будем рассматривать условие задачи и решение только на языке программирования Python.

Задача 1 (Союз ИЛИ)

Ниже приведена программа, записанная на 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»?

Решение:

Разберёмся построчно что тут в программе происходит 😃

  1. s = int(input()) — Просим пользователя ввести первое число(input()), пользователь вводит строку как число, сохраняем значение(=) в переменную (s) как целое число (int(<то что было введено>))
  2. t = int(input()) — Тоже самое что и в первой строке только для второго числа сохраняем в переменную t.
  3. Условие по которому программа напечатает "YES": Если (if) s больше восьми (s > 8) ИЛИ (or) t больше восьми (t > 8) то(:)
  4. Печатаем в консоль программы: YES
  5. Иначе(если условие не проходит проверку)
  6. Печатаем в консоль программы: NO

Чтобы программа напечатала "YES", нужно, чтобы в паре было хотя бы одно число, которое больше 8, т.к. в условии стоит союз ИЛИ (or). Подходят пары: (9, 5); (10, 9); (-9, 10); (–10, 9). Всего получается 4 запуска.

Ответ: 4

Задача 2 (Союз ИЛИ, закрепление)

Ниже приведена программа, записанная на 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

Задача 3 (Союз И)

Ниже приведена программа, записанная на 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

Задача 4 (Союз И, закрепление)

Ниже приведена программа, записанная на 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 (Целочисленное деление)

Ниже приведена программа, записанная на 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

Задача 6 (Остаток от деления)

Ниже приведена программа, записанная на 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

Задача 6 (С параметром)

Ниже приведена программа, записанная на 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

Задача 7 (С параметром, закрепление)

Ниже приведена программа, записанная на 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

Задача 8 (Крепкий орешек)

Ниже приведена программа, записанная на 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