Ребята в детском саду снова играют с числами. И пусть числа они знают плохо, придумывать их они очень любят.
Они договорились, что будут называть числа по очереди и тот, кто назовёт число с наибольшей суммой цифр, будет считаться победителем. В качестве судьи они выбрали бедную воспитательницу, и она попросила нас о помощи. Напишите программу, которая определит победителя.
Формат ввода
В первой строке записано число N — количество детей в группе. Далее вводятся имя ребенка и его число (каждое на своей строке).
Формат вывода:
Требуется вывести имя победителя.
Если два ребенка назвали числа с одинаковой суммой цифр, победителем должен быть признан тот, кто ходил позже.
Пример
Ввод
2
Аня
123
Боря
234
Вывод
Боря
Ввод
3
Аня
1234
Боря
234
Ваня
2323
Вывод
Ваня
Решение
Обычная задача на поиск максимума. Нюанс состоит в том, что нам надо отслеживать две переменные – максимальная сумма и имя. Второй нюанс в том, что нам надо назвать имя последнего ребенка в случае совпадения сумм.
Инициализируем максимальную сумму в -1 и имя в пустую строку.
Принимаем количество детей.
Организуем цикл ввода имени и числа и в цикле сравниваем сумму цифр числа с текущей максимальной. Как посчитать сумму цифр мы знаем из задачи K. Цифровая сумма.
Если сумма цифр больше или равна текущей максимальной, то запоминаем имя и новую сумму.
По окончании цикла выводим имя победителя.
Посмотреть код
Решение
count = int(input())
best_name = ''
best_sum = 0
for i in range(count):
name = input()
number = int(input())
summa = 0
while number > 0:
summa += number % 10
number //= 10
if summa >= best_sum:
best_sum = summa
best_name = name
print(best_name)