Задание №16
ID: 410
Программирование: обработка последовательности чисел
Последовательность заканчивается числом 0
Напишите программу, которая в последовательности натуральных чисел определяет максимальное число, у которого сумма цифр является чётной.
Программа получает на вход натуральные числа, количество введённых чисел неизвестно, последовательность заканчивается числом 0. Число 0 является признаком окончания ввода и в последовательность не входит. В последовательности всегда имеется хотя бы одно подходящее число.
Программа должна вывести одно число: максимальное число с чётной суммой цифр.
Пример работы программы:
| Входные данные | Выходные данные |
|---|---|
| 123 58 77 204 0 | 204 |
Задание выполняется на компьютере. После выполнения можно посмотреть решение.
Решение
Идея решения:
- Считываем первое число последовательности.
- Создаём список
b, куда будем добавлять числа с чётной суммой цифр. - Пока не встретился ноль, для каждого числа считаем сумму его цифр.
- Цифры перебираем по индексам через
range(len(str(a))), после чего каждую цифру переводим в число и прибавляем к переменнойs. - Если сумма цифр делится на 2 без остатка, добавляем исходное число в список с помощью
append. - После окончания ввода считаем первое число из списка начальным максимумом.
- Перебираем список
bпо индексам и находим максимальное подходящее число. - В конце выводим найденный максимум.
Решение на 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) # выводим максимальное подходящее число