Задание №16
ID: 410

Программирование: обработка последовательности чисел

Последовательность заканчивается числом 0

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

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

Программа должна вывести одно число: максимальное число с чётной суммой цифр.

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

Входные данныеВыходные данные
123
58
77
204
0
204
Задание выполняется на компьютере. После выполнения можно посмотреть решение.

Решение

Идея решения:

  1. Считываем первое число последовательности.
  2. Создаём список b, куда будем добавлять числа с чётной суммой цифр.
  3. Пока не встретился ноль, для каждого числа считаем сумму его цифр.
  4. Цифры перебираем по индексам через range(len(str(a))), после чего каждую цифру переводим в число и прибавляем к переменной s.
  5. Если сумма цифр делится на 2 без остатка, добавляем исходное число в список с помощью append.
  6. После окончания ввода считаем первое число из списка начальным максимумом.
  7. Перебираем список b по индексам и находим максимальное подходящее число.
  8. В конце выводим найденный максимум.

Решение на Python:

a = int(input())  # считываем первое число
b = []  # создаём список для подходящих чисел

while a != 0:  # обрабатываем числа до нуля
    s = 0  # создаём переменную для суммы цифр

    for i in range(len(str(a))):  # перебираем цифры числа по индексам
        s += int(str(a)[i])  # добавляем очередную цифру к сумме

    if s % 2 == 0:  # проверяем, что сумма цифр является чётной
        b.append(a)  # добавляем подходящее число в список

    a = int(input())  # считываем следующее число

m = b[0]  # считаем первое подходящее число начальным максимумом

for i in range(len(b)):  # перебираем список по индексам
    if b[i] > m:  # проверяем, больше ли текущее число максимума
        m = b[i]  # обновляем максимум

print(m)  # выводим максимальное подходящее число