Перейти к содержимому

Задание 16 ОГЭ по информатике 2027: программа на Python

Задание 16до 2 балловпрограмма на Python
Раздел
Алгоритмы и программирование · часть 2
Максимальный балл
2 балла
Уровень
высокий
Что проверяет
Создавать и выполнять программы на универсальном языке программирования
Что нужно сделать
Написать программу, которая читает последовательность чисел и печатает одно число: количество, сумму или максимум чисел с условием.
Как записать ответ
программа на любом языке программирования — файлом исходного текста
Время
Около 25 минут по обобщённому плану ФИПИ
Элемент кодификатора
3.2
Где решается
За компьютером; ответ — отдельный файл, его проверяют эксперты по критериям
Программа
Система программирования
Файл ответа
Исходный текст программы на любом языке; у нас проверяем Python и Кумир на тестах, остальные языки — ориентировочно
Справляются
5,9 % участников по отчётам Кировской и Иркутской областей и Татарстана за 2025 год

Шестнадцатое задание ОГЭ по информатике 2027 года — единственное, где программу пишут самому. На вход приходит последовательность натуральных чисел: либо до нуля, либо сначала их количество N. Программа выбирает числа с условием — кратность, последняя цифра, запись в другой системе счисления — и печатает одно число: сколько их, их сумму, наибольшее или наименьшее. Язык любой: Python, Паскаль, C++, школьный алгоритмический язык.

Это задание высокого уровня, последнее в работе: по плану ФИПИ на него около 25 минут, максимум — 2 балла. До него многие просто не доходят: по отчёту Иркутской области за 2025 год к заданию 16 не приступили 94,5 % участников. При этом сама программа короткая — 7–10 строк, и почти все варианты собираются из одного каркаса: цикл ввода, проверка условия, счётчик.

Что нужно сдать

  • Сдают один файл с исходным текстом программы. Имя файла и каталог называют организаторы; расширение — обычное для вашего языка (.py для Python, .kum для Кумира).
  • Программа обязана сама читать данные. Если числа примера вписаны прямо в код, программа на других тестах не работает, и за задание ставят 0 баллов.
  • Вывод — только одно число. Ни подсказок для ввода, ни слов вокруг ответа: проверяют, что программа напечатала именно искомое число.
  • Эксперт запускает программу на трёх тестах из критериев; примера из условия среди них нет. Поэтому совпадение с примером — ещё не гарантия.
  • Не оценивают язык, стиль, имена переменных, комментарии и скорость — только ответы на тестах. Ввод из файла вместо клавиатуры методические рекомендации ФИПИ тоже допускают.

Как выполнять: по шагам

Каркас: числа до нуля

Так устроено задание в демоверсии 2027 года: количество чисел неизвестно, ввод кончается нулём, а сам 0 в последовательность не входит.

c = 0
x = int(input())
while x != 0:
    if условие:
        c += 1
    x = int(input())
print(c)

Первое число читают до цикла, следующее — последней строкой тела цикла. Тогда ноль не попадёт в проверку.

Каркас: сначала количество N

Если в условии сказано «сначала вводится количество чисел», цикл — for:

n = int(input())
s = 0
for i in range(n):
    x = int(input())
    if условие:
        s += x
print(s)

Не путайте два формата: программа «до нуля» на входе с N зависнет или упадёт, а программа с N на входе «до нуля» прочитает первое число как количество.

Python в IDLE

1. File → New File — откроется окно для текста программы. 2. Наберите программу и сохраните её: File → Save, имя и папка — те, что назвали организаторы, расширение .py. 3. Запустите: Run → Run Module (клавиша F5). Ввод и вывод появятся в окне оболочки. 4. Введите числа примера по одному, после каждого — Enter. Сравните ответ с примером. 5. Запустите ещё два-три раза на своих тестах (ниже) и только потом сдавайте файл.

Школьный алгоритмический язык в Кумире

Та же программа демоверсии 2027 года на алгоритмическом языке:

алг
нач
  цел x, c
  c := 0
  ввод x
  нц пока x <> 0
    если mod(x, 8) = 5 и x >= 512 и x <= 4095 то
      c := c + 1
    все
    ввод x
  кц
  вывод c
кон

Наберите её в новом файле Кумира, запустите выполнение и вводите числа в области ввода-вывода по одному. Файл сохраните с расширением .kum.

Свои тесты перед сдачей

1. Пример из условия — ответ должен совпасть. 2. Тест, где ни одно число не подходит: ответ 0 (у суммы — 0, у максимума смотрите, что гарантирует условие). 3. Граничные числа: если условие «четырёхзначна в восьмеричной», проверьте 512 и 4095 — они подходят, а 511 и 4096 нет. 4. Число, которое проходит одно условие, но не другое: так ловится «или» вместо «и».

Критерии оценивания

Задание 16

Программа на языке программирования

до 2 баллов

Написать программу обработки последовательности чисел (в демоверсии — подсчёт чисел с заданной записью в восьмеричной системе). «Решением является программа, записанная на любом языке программирования».

Программа и тесты

макс. 2 балла
2 балла
  • «Предложено верное решение. Программа правильно работает на всех приведённых выше тестах».
1 балл
  • «Программа выдаёт неверный ответ только на одном из тестов, приведённых выше».
0 баллов
  • «Программа выдаёт на тестах неверные ответы, количество которых отличается от указанного в критерии на 1 балл».
Важно
  • Эксперты проверяют программу на тестах из критериев: в демоверсии их три. Тест не засчитан при неверном ответе, зацикливании или аварийном завершении.
  • Программа должна читать входные данные: решение с числами, записанными прямо в коде, оценивается в 0 баллов. Если из-за синтаксических ошибок программу нельзя запустить — тоже 0.
  • «Программа должна напечатать только одно число – количество искомых элементов последовательности».
Как проверяем у нас
  • Python и школьный алгоритмический язык (Кумир) запускаем на тестах: входные данные уходят в браузер, ответы сверяет сервер.
  • Программы на C++, Pascal, Java и C# оценивает ИИ по тем же тестам — такая оценка помечена как ориентировочная.

Критерии всех заданий экзамена — на странице критериев ОГЭ.

За что снимают баллы

ОшибкаСколько снимут
Неверный ответ ровно на одном из трёх тестов критериев−1 балл
Неверный ответ на двух или трёх тестах — например, условия соединены «или» вместо «и»0 баллов за задание
Программа зависла или завершилась с ошибкой на тестетест не засчитан, как неверный ответ
Синтаксическая ошибка: программу нельзя запустить0 баллов за задание
Нет ввода — числа вписаны в программу — или нет вывода0 баллов за задание
Решение на Паскале, C++ или алгоритмическом языке вместо Pythonне снимают: язык любой
Ввод из файла вместо клавиатуры, лишние переменные, нет комментариевне снимают

Проверить свой файл

Задания номера 16 из банка тренажёра — с файлами, как на экзамене. Скачайте материалы, выполните задание в LibreOffice, МойОфис или своей среде и загрузите файл ответа: проверка по критериям ФИПИ покажет балл и протокол — что засчитано, а что нет. Кнопка «Ещё 5 таких» у типа задания ниже даёт задания одного типа.

Загружаем задание…

Задание 16 вместе с остальными — в вариантах целиком.

Шаблоны кода на Python

Ввод до 0 и подсчёт чисел с условием

Последовательность заканчивается числом 0: читаем в цикле, пока не придёт 0, сам 0 не обрабатываем. Меняете только условие в if — кратность (x % 3 == 0) или последнюю цифру (x % 10 == 4).

Python
count = 0
while True:
    x = int(input())
    if x == 0:          # 0 — конец последовательности, его не считаем
        break
    if x % 3 == 0 and x % 10 == 4:   # условие из задачи
        count += 1
print(count)
Пример ввода
14 24 34 54 0
Вывод на этом вводе
2

Сначала количество чисел: сумма с условием

Если первым вводят, сколько будет чисел, нужен цикл for на n шагов, а не до 0. Сумму копим в переменной, начальное значение — 0.

Python
n = int(input())        # сначала — сколько будет чисел
total = 0
for _ in range(n):
    x = int(input())
    if x % 6 == 0:      # условие из задачи
        total += x
print(total)
Пример ввода
5 12 7 18 30 9
Вывод на этом вводе
60

Максимум среди чисел с условием

Начальное значение — 0: числа натуральные, любое подходящее его заменит. Для минимума начните с числа больше любого допустимого (по условию, например 30 001) и замените знак сравнения.

Python
best = 0                # числа натуральные: 0 меньше любого из них
while True:
    x = int(input())
    if x == 0:
        break
    if x % 5 == 0 and x > best:   # условие из задачи и «больше лучшего»
        best = x
print(best)
Пример ввода
35 12 80 45 7 0
Вывод на этом вводе
80

Цифры числа в десятичной, двоичной или восьмеричной записи

Цифры отщепляем с конца: y % base — последняя цифра записи, y //= base — отбросить её. Тот же цикл даёт сумму цифр, их количество и запись в системе с основанием base.

Python
base = 10               # 8 — восьмеричная запись, 2 — двоичная
count = 0
while True:
    x = int(input())
    if x == 0:
        break
    y, digits, s = x, 0, 0
    while y > 0:
        d = y % base    # последняя цифра записи
        s += d
        digits += 1
        y //= base
    if s > 10:          # условие на цифры: сумма s, количество digits, последняя x % base
        count += 1
print(count)
Пример ввода
19 46 59 100 389 0
Вывод на этом вводе
2

Среднее арифметическое чисел с условием

Копим сумму и количество подходящих чисел, делим в конце. Если подходящих нет, деление на 0 уронит программу — проверьте count и выведите то, что требует условие.

Python
count = 0
total = 0
while True:
    x = int(input())
    if x == 0:
        break
    if x % 8 == 0:      # условие из задачи
        count += 1
        total += x
if count > 0:
    print(round(total / count, 1))   # «с точностью до десятых»
else:
    print('NO')
Пример ввода
16 10 24 31 0
Вывод на этом вводе
20.0

Типы задания 16 с решением

Количество чисел с условием на запись в другой системе

Пример условия

На вход подаются натуральные числа, ввод заканчивается нулём. Посчитайте числа, запись которых в пятеричной системе трёхзначна и оканчивается на 2.

27
130
57
12
122
0

Для этого примера ответ — 3.

1. Трёхзначные пятеричные числа — от 1005 = 25 до 4445 = 124. 2. Последняя пятеричная цифра — x % 5. 3. Каркас «до нуля»: счётчик c увеличиваем, если 25 <= x <= 124 и x % 5 == 2.

На примере: 27 = 1025, 57 = 2125 и 122 = 4425 подходят; 130 = 10105 — четыре цифры, 12 = 225 — две. Это тип задания из демоверсии 2027 года.

Решение на Python
c = 0
x = int(input())
while x != 0:
    # три цифры в пятеричной записи и последняя цифра 2
    if 25 <= x <= 124 and x % 5 == 2:
        c += 1
    x = int(input())
print(c)
Ввод с клавиатуры
27 130 57 12 122 0

Ответ: 3

Сумма чисел с двумя условиями

Пример условия

Сначала вводится количество чисел N, затем N натуральных чисел. Найдите сумму чисел, которые кратны 6, но не кратны 4.

6
18
24
30
7
42
36

Для этого примера ответ — 90.

1. Первое число — количество, его не складывают: цикл for на N повторений. 2. «Кратно 6, но не кратно 4» — x % 6 == 0 and x % 4 != 0. 3. Подходящие числа прибавляем к сумме s.

На примере: 24 и 36 кратны 6, но делятся и на 4; 7 не кратно 6. Остаются 18 + 30 + 42 = 90.

Решение на Python
n = int(input())
s = 0
for i in range(n):
    x = int(input())
    if x % 6 == 0 and x % 4 != 0:
        s += x
print(s)
Ввод с клавиатуры
6 18 24 30 7 42 36

Ответ: 90

Наименьшее число с условием

Пример условия

На вход подаются натуральные числа, не больше 30 000; ввод заканчивается нулём. Найдите наименьшее число, оканчивающееся на 7. Гарантируется, что такое число есть.

1457
307
98
4407
2017
0

Для этого примера ответ — 307.

1. Начальный минимум — число больше любого возможного: 30001. С нулём минимум никогда бы не изменился. 2. Если x % 10 == 7 и x меньше текущего минимума — запоминаем x. 3. Ноль-признак конца в сравнение не попадает: проверка стоит внутри цикла while x != 0.

На примере: на 7 оканчиваются 1457, 307, 4407 и 2017; наименьшее — 307.

Решение на Python
m = 30001  # больше любого числа из условия
x = int(input())
while x != 0:
    if x % 10 == 7 and x < m:
        m = x
    x = int(input())
print(m)
Ввод с клавиатуры
1457 307 98 4407 2017 0

Ответ: 307

Условие на цифры числа

Пример условия

На вход подаются натуральные числа, ввод заканчивается нулём. Посчитайте числа, у которых цифра десятков больше цифры единиц.

351
1249
96
7
4482
36
0

Для этого примера ответ — 3.

1. Цифра единиц — x % 10, цифра десятков — (x // 10) % 10. 2. У однозначного числа цифра десятков равна 0 — условие для него ложно, отдельный случай не нужен. 3. Считаем числа, где десятки больше единиц.

На примере: 351 (5 > 1), 96 (9 > 6), 4482 (8 > 2) подходят; 1249 (4 < 9), 7 (0 < 7), 36 (3 < 6) — нет.

Решение на Python
c = 0
x = int(input())
while x != 0:
    tens = (x // 10) % 10  # цифра десятков
    units = x % 10         # цифра единиц
    if tens > units:
        c += 1
    x = int(input())
print(c)
Ввод с клавиатуры
351 1249 96 7 4482 36 0

Ответ: 3

Что нужно знать

  • x % k — остаток от деления: последняя цифра числа в системе с основанием k. x % 10 — последняя десятичная цифра, x % 8 — последняя восьмеричная. Переводить число целиком не нужно.
  • x // k — деление нацело: отбрасывает последнюю цифру. Цифра десятков — (x // 10) % 10.
  • Сколько цифр в k-ичной записи — это диапазон: четырёхзначные восьмеричные числа идут от 10008 = 512 до 77778 = 4095, трёхзначные пятеричные — от 1005 = 25 до 4445 = 124.
  • Кратно и не кратно: x % 3 == 0 и x % 3 != 0. Условия соединяют словом and, если нужны оба сразу.
  • Начальные значения: счётчик и сумма — 0; максимум натуральных чисел — 0; минимум — число больше любого возможного, например 30001, если в условии числа не больше 30 000.

Разбор задания демоверсии 2027

В демоверсии 2027 года нужно посчитать числа, запись которых в восьмеричной системе четырёхзначна и оканчивается на 5. Ввод — до нуля, в примере 485, 557, 893, 3029, 4125 и ответ 3.

Условие разбивается на два. «Четырёхзначна» — число от 512 до 4095 включительно. «Оканчивается на 5» — x % 8 == 5. Проверим пример: 485 = 7458 — три цифры; 557 = 10558, 893 = 15758, 3029 = 57258 — подходят; 4125 = 100358 — пять цифр. Итого 3.

Программа — каркас «до нуля» с условием 512 <= x <= 4095 and x % 8 == 5. В решении ФИПИ то же условие записано как 511 < x < 4096, а цикл идёт, пока x больше нуля. Мы прогнали программу на трёх тестах критериев: ответы 1, 3 и 0 совпали с эталоном. Во втором тесте подходят 565 = 10658, 853 = 15258 и 1141 = 21658, а 377 и 4309 выпадают по длине записи. В третьем тесте ловушка: у 535 = 10278, 1555 = 30238 и 2775 = 53278 десятичная запись кончается на 5, а восьмеричная — нет.

Решите задание сами в демоверсии ОГЭ 2027 по информатике: программу на Python проверка запустит на тестах, как эксперт.

Типичные ошибки

Проверили десятичную запись вместо нужной

В методических рекомендациях ФИПИ разобрана программа, где условие на делимость заменили проверкой последней цифры: она ошиблась на одном тесте и получила 1 балл. В демоверсии 2027 года та же ловушка с системой счисления: «оканчивается на 5 в восьмеричной» — это x % 8 == 5, а не x % 10 == 5.

«Или» вместо «и»

Если условия соединены через or, программа считает числа, подходящие хотя бы под одно условие. В разборе ФИПИ такая программа на всех трёх тестах выдала неверные ответы — 0 баллов. Читайте союзы условия: «кратно 3 и оканчивается на 4» — and.

Числа примера вписаны в программу

Программа, которая не читает ввод, а считает заранее записанные числа, на тестах эксперта даёт ответ примера. По методическим рекомендациям ФИПИ это 0 баллов, даже если ответ примера верный.

Ноль обработан как число

Если читать x в начале тела цикла и сразу проверять условие, ноль-признак конца тоже пройдёт проверку. Для счётчика это иногда незаметно, а минимум превратится в 0. Читайте следующее число последней строкой цикла.

Неверная граница диапазона

«Четырёхзначна в восьмеричной» — от 512 до 4095 включительно. Условие x > 512 теряет число 512, а x < 4096 и x <= 4095 равнозначны. Проверьте обе границы на своём тесте.

Программа с синтаксической ошибкой

Программу, которая не запускается, оценивают в 0 баллов — в отличие от задания 15, где синтаксис прощают. Перед сдачей запустите файл хотя бы на примере из условия.

Вопросы и ответы

На каком языке писать задание 16?

На любом, который вы знаете: критерии ФИПИ принимают программу на любом языке программирования. Перечень программ определяет регион: например, в Московской области в 2026 году на компьютерах стояли Python (IDLE), PascalABC.NET, CodeBlocks для C++ и Кумир.

Как проверить программу для задания 16 без эксперта?

Запустите её на примере из условия, затем на своих тестах: где ни одно число не подходит, где есть числа на границах условия и где число проходит только одно из двух условий. Если все ответы сходятся с подсчётом вручную, программа, скорее всего, верна.

Можно ли прочитать все числа одной строкой через split?

Нет, если числа вводятся по одному в строке, как в примере работы программы: input().split() прочитает только первое число. Читайте int(input()) в цикле — до нуля или N раз, как сказано в условии.

Сколько баллов можно получить, если программа ошибается на одном тесте?

1 балл из 2. Ошибка на двух тестах или больше, программа без ввода или не запускающаяся программа — 0 баллов.

Нужно ли переводить число в другую систему счисления?

Обычно нет. Последняя цифра в системе с основанием k — остаток x % k, а число цифр задаётся диапазоном: например, четырёхзначные восьмеричные числа — от 512 до 4095. Перевод строкой (oct, bin) тоже работает, но в нём легко забыть про префикс 0o или 0b.

Другие задания раздела «Алгоритмы и программирование»

По демоверсии, спецификации и кодификатору ФИПИ 2027
Обновлено:

Все задания ОГЭ по информатике →