Задание OGEINF17F601: Написание программы

ФИПИ · ОГЭ · все форматы ответа · 1585 заданий

Открыть решение ↓ Ошибка или пожелание

Тип задачи: Написание программы.

Учебные темы: Табличные величины (массивы). Одномерные массивы. Составление и отладка программ, реализующих типовые алгоритмы обработки одномерных числовых массивов, на одном из языков программирования (Python, C++, Паскаль, Java, C#, Школьный Алгоритмический Язык): заполнение числового массива случайными числами, в соответствии с формулой или путём ввода чисел, нахождение суммы элементов массива, линейный поиск заданного значения в массиве, подсчёт элементов массива, удовлетворяющих заданному условию, нахождение минимального (максимального) элемента массива. Сортировка массива. Обработка потока данных: вычисление количества, суммы, среднего арифметического, минимального и максимального значения элементов последовательности, удовлетворяющих заданному условию.

Дайте развернутый ответ.

Напишите программу, которая в последовательности натуральных чисел вычисляет сумму трёхзначных чисел, кратных 4. Программа получает на вход натуральные числа, количество введённых чисел неизвестно, последовательность чисел заканчивается числом 0 (0 –  признак окончания ввода, не входит в последовательность).

Количество чисел не превышает 20. Введённые числа не превышают 1500.

Программа должна вывести одно число: сумму трёхзначных чисел, кратных 4.

 

Пример работы программы:

Входные данные

Выходные данные

18
192

104
117
0

296

 


 

i
СВОЙСТВА ЗАДАНИЯ
КЭС:
3.2 Язык программирования (Python, C++, Паскаль, Java, C#, Школьный Алгоритмический Язык). Система программирования: редактор текста программ, транслятор, отладчик. Переменная: тип, имя, значение. Целые, вещественные и символьные переменные. Оператор присваивания. Арифметические выражения и порядок их вычисления. Операции с целыми числами: целочисленное деление, остаток от деления. Ветвления. Составные условия (запись логических выражений на изучаемом языке программирования). Нахождение минимума и максимума из двух, трёх и четырёх чисел. Решение квадратного уравнения, имеющего вещественные корни. Цикл с условием. Алгоритм Евклида для нахождения наибольшего общего делителя двух натуральных чисел. Разбиение записи натурального числа в позиционной системе с основанием, меньшим или равным 10, на отдельные цифры. Цикл с переменной. Алгоритмы проверки делимости одного целого числа на другое, проверки натурального числа на простоту
Тип ответа:Развернутый ответ
Номер: 17F601
НЕ РЕШЕНО Изменить статус

Решение задания OGEINF17F601

Ответ: Программа приведена в шаге 3

1. Разберём формат ввода.
Ввод содержит сами числа, а не их количество. Считываем очередное число и прежде всего проверяем, равно ли оно нулю. При нуле завершаем обработку: этот признак окончания не входит в последовательность и не должен влиять на сумму, количество, среднее или экстремум.

2. Выберем алгоритм.
Количество цифр в записи по основанию 10 должно быть равно 3. Это равносильно границам 10² ≤ x ≤ 10³ − 1, то есть 100 ≤ x ≤ 999. Левый конец включён, следующее значение 1000 уже имеет больше цифр.
Число кратно 4, когда остаток от деления на 4 равен нулю. В Python остаток вычисляет оператор %. Это правило верно и для отрицательных целых чисел.
Все перечисленные требования должны выполняться одновременно, поэтому соединяем проверки оператором and.
Сумма total начинается с нуля. При каждом подходящем числе прибавляем само число x, сохраняя его знак. Неподходящие значения ничего не добавляют.
Если подходящих чисел нет, счётчик или сумма остаются равны нулю; программа выводит 0.

3. Программа на Python 3.

import sys

data = iter(map(int, sys.stdin.buffer.read().split()))
count = 0
total = 0
best = None
for x in data:
    if x == 0:
        break
    if 100 <= x < 1000 and (x % 4 == 0):
        count += 1
        total += x
print(total)

4. Проверка и обоснование.
Пример 1. Входные числа: 18 192 104 117 0.
Подходящие элементы: 192, 104. Их количество — 2. Сумма: 192 + 104 = 296.
Вывод: 296.
После каждой обработанной записи накопленные значения точно описывают уже просмотренную часть данных. На очередном шаге неподходящий элемент ничего не меняет, а подходящий учитывается один раз. После последней записи получаем результат для всей последовательности. Каждая запись обрабатывается один раз, поэтому время работы линейно по количеству записей. Алгоритму достаточно нескольких накопителей; приведённый способ чтения сохраняет входной текст, поэтому общая память программы линейна по размеру ввода.

Ответ: Программа приведена в шаге 3.

Помочь улучшить сайт

Напишите пожелание к сайту или решению либо сообщите о найденной неточности в задании OGEINF17F601.

Сообщение увидит только команда сайта: на странице оно не публикуется.

Комментарии к решению

Комментарии видны всем посетителям сайта.

Комментариев пока нет. Будьте первым.

Чтобы оставить комментарий, войдите или зарегистрируйтесь.