Python|桁数の和


桁数の和


1.質問🧐


N個の自然数を入力すると,自然数毎の桁数の和を求め,プログラム出力最大の自然数を記述する.自然数桁ごとの和を求める関数をプログラミングするにはdef digit sum(x)を記述しなければならない.

2.入力


1行目は自然数の個数N(3<=N<=100)を与え、2行目はN個の自然数を与える.各自然数の大きさは1000000を超えない.
3
125 15232 97

3.出力


出力ビット数の和の最大自然数.数字の桁数の和が同じであれば、まず入力順に出力される数字です.
97

4.問題を解くポイント🔍

def digit_sum(x):
    sum = 0
    while x > 0:
        sum += x % 10
        x = x // 10
    return sum
この部分はコアポイントです.xのシェアが0に近づく前に、xを10で割って残りの値をsumに加算すると、桁数の和が得られます.

5.コード💻


1)私の解答1-関数x

import sys
sys.stdin=open("input.txt","r")

N = int(input())
num = list(map(int, input().split()))

print(num)

# 1단계 : 예를 들어 125를 1,2,5로 분리하기
str_list = []
for n in num:
    str_list.append(list(str(n)))

print(str_list)


# 2단계 : 각 자리수 문자열을 int타입으로 만들어서 
# 더한 값을 다시 sum_list에 넣어주기
sum_list=[]
sum = 0
for num_list in str_list:
    sum = 0
    for n in num_list:
        sum += int(n)
    sum_list.append(sum)

# print(num)
print(sum_list)

# 3단계 : 자릿수의 합 중에 최대값 구하기
max = 0 #최대값 구할 변수
midx = 0
for idx, i in enumerate(sum_list):
    if i > max:
        max=i
        midx=idx

print(num[midx])

2)私の解答2-関数o

import sys
sys.stdin=open("input.txt","r")

N = int(input())
num = list(map(int, input().split()))

# print(num)

str_list = []
sum_list=[]
def digit_sum(x):
    sum = 0
    for num_list in str_list:
        sum = 0
        for n in num_list:
            sum += int(n)
    sum_list.append(sum)

for n in num:
    str_list.append(list(str(n)))
    digit_sum(n)

# print(str_list)
# print(num)
# print(sum_list)

max = 0
midx = 0
for idx, i in enumerate(sum_list):
    if i > max:
        max=i
        midx=idx

print(num[midx])

3)模範解答


n = int(input())
a = list(map(int, input().split()))


def digit_sum(x):
    sum = 0
    while x > 0:
        sum += x % 10
        x = x // 10
    return sum

for x in a:
    ja = digit_sum(x)
    if ja > max:
        max = ja
        res = x
    print(res) 
韓国情報