Дано n целых положительных чисел. Требуется определить в каком из них самая большая сумма цифр и вывести номер этого числа.
Формат входных данных
Целое положительное число 1 < n < 20;
n целых положительных чисел 0 < numN < 2 147 483 648.
Формат выходных данных
Номер числа с наибольшей суммой цифр. Если таких чисел несколько, выведите номер первого из них.
входные данные
6
38275955
1324667620
1270258744
846055699
679263851
18099845
выходные данные
4
python
Answers & Comments
amount = int(input())
numbers = []
numbers2 = []
for i in range(amount):
numbers.append(input())
numbers2.append(0)
for z in range(amount):
for i in numbers[z]: numbers2[z] += int(i)
print(str(numbers2.index(max(numbers2)) + 1))
Ответ:
--- Python 3.8.3 ---
import typing
from typing import Callable
from typing import AnyStr
from typing import Any
from typing import Iterable
from typing import List
from math import inf
#DEFINE User-Types
Numeric = typing.TypeVar('Numeric', int, float, complex)
Primitive = typing.TypeVar('Primitive', int, float, complex, str, bytes, bytearray)
#END
def IndexMax(Array: List[Any]) -> int:
'''
Возвращает индекс первого вхождения максимума для list
'''
_max = -inf
_maxind = 0
for index, item in enumerate(Array):
if item > _max:
_max = item
_maxind = index
return _maxind
def ReadSeq(SeqLen: int, CastType: Primitive = int):
'''
Возвращает последовательность элементов в указанном типе, считанных с клавиатуры, заданной длины.
'''
try:
for _ in range(SeqLen):
yield CastType(input())
except TypeError:
raise RuntimeError(f'Unsupported type: {CastType}')
def ListTransform(Data: List[Any], Tranformer: Callable[[Any], Any], Selector: Callable[[Any], bool] = lambda p: True):
'''Трансформирует элементы list, удовлетворяющие условию, в соответствии с заданным правилом
По умолчанию трансформирует все элементы'''
for index, item in enumerate(Data):
if (Selector(item)):
Data[index] = Tranformer(item)
return Data
def main():
n = int(input())
RawData = list(ReadSeq(n))
Summator = lambda Integer: sum(map(int, list(str(Integer))))
print(IndexMax(ListTransform(RawData, Summator))+1)
if __name__ == "__main__":
main()