はこねのはこ

はこねさんの備忘録

Python 各桁の和を求める

はじめに

AtCoderのABC0838の問題をしていて、 思いつけなくて悔しかったやり方を見たのでメモ

やりたかったこと

各桁の数字を足した値を求める

strを用いた方法

python、for文で文字列の一文字ずつ順番に参照できることを利用した方法

def digit_sum2(num):
    total = 0
    for digit in str(num):
        total += int(digit)
    return total

提出していたコード

digit_sum関数内で、値を10で割った余りを求め、 その後桁をずらす方法で実装していた。

def digit_sum(num):
    total_num = 0
    while num > 0:
        total_num += num % 10
        num //= 10
    return total_num

num_list= []
n, a, b = map(int, input().split())

for i in range(1,n+1):
    num = digit_sum(i)
    if num >= a and num <= b:
        num_list.append(i)

print(sum(num_list))

さいごに

アルゴリズムの引き出しが上手く開かなかったです。 競プロは他の方の考え方を知れていいですね。