РУҚА
16

Решение: Сумма чисел, кратных 17

ОГЭ · Информатика · Задание 16 · Основы программирования
ПовышеннаяФИПИ30E5C9Развёрнутое решение≈ 10 минутРазбор в 5 шагов
Условие

Напишите программу, которая в последовательности целых чисел находит сумму и количество чисел, кратных 17, или сообщает, что таких чисел нет. На вход программы подаются целые числа, количество введённых чисел неизвестно, последовательность заканчивается числом 0. Число 0 является признаком окончания ввода и не входит в последовательность.

Количество чисел не превышает 100. Введённые числа по модулю не превышают 300. Программа должна вывести сумму и количество чисел, кратных 17, или вывести `NO`, если таких чисел в последовательности нет.

В ответе приведите программу и кратко объясните принцип её работы.

Открыть задачу и решить самому
Дальше ответЕсли ещё решаете — начните с подсказок: они ведут к ответу, но не выдают его.
К подсказкам

Решение по шагам

5 шагов
1

Введём переменные для суммы найденных чисел и их количества. Изначально обе величины равны нулю.

$$s = 0,\quad k = 0$$
2

Будем последовательно считывать числа. Если введено 0, цикл завершается, поскольку 0 не является членом последовательности.

$$x = 0 \Rightarrow \text{конец цикла}$$
3

Для каждого другого числа проверяем остаток от деления на 17. Если остаток равен нулю, число кратно 17: добавляем его к сумме и увеличиваем счётчик.

$$x \bmod 17 = 0 \Rightarrow s := s + x,\quad k := k + 1$$
4

После завершения ввода проверяем, были ли найдены подходящие числа. Если нет, выводим `NO`; иначе выводим сумму и количество.

$$k = 0 \Rightarrow \text{NO}$$

Один из вариантов программы на Python:

Ответ

s = 0
k = 0

while True:
x = int(input())
if x == 0:
break
if x % 17 == 0:
s += x
k += 1

if k == 0:
print('NO')
else:
print(s, k)

Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.

Где здесь ошибаются

Учитывают число 0 как элемент последовательности.

Проверяют кратность по условию x / 17 == 0 вместо x % 17 == 0.

Выводят NO при нулевой сумме, хотя подходящие числа могли быть, например, отрицательными и взаимно уничтожить сумму.

Забывают увеличить количество найденных чисел.

Не обрабатывают отрицательные числа, хотя условие допускает их.

Закрепить приёмВ теме «Основы программирования» ещё 153 задачи — с ответом и таким же разбором.
Тренироваться

Как решать задание 16 ОГЭ, информатика

Разбор этой задачи разложен на 5 шагов: видно, откуда берётся каждое число и где теряется балл. Ответ приведён рядом с выкладками, а не вместо них.

Задача из темы «Основы программирования»: в ней 154 задачи, и у каждой есть такой же разбор. Регистрация не нужна.