AtCoder ABC 083 B – Some Sums Python解説

スポンサーリンク

Some Sums

1 以上 N 以下の整数のうち、10進法での各桁の和が A 以上 B 以下であるものの総和を求めてください。

AtCoder Beginner Contest 083 「Some Sums」

問題を解くには、各桁の和を求める、各桁の和がA以上B以下であるか調べる、という2つの手順で大丈夫そうです。

まず各桁の和を求める方法として、対象の数値を割り切れなくなるまで10で割っていき、余りを求める方法があるので関数として用意します。

def some_sums(i):
    sums = 0
    while i > 0:
        sums += i % 10
        i //= 10
    return sums

各桁の和がA以上B以下になっているかはfor文を使って調べていきます。
その際、上記の各桁の和を求める関数を使います。

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

def some_sums(i):
    sums = 0
    while i > 0:
        sums += i % 10
        i //= 10
    return sums

ans = 0

for i in range(1, n + 1):
    if a <= some_sums(i) <= b:
        ans += i
        
print(ans)

各桁の和がA以上B以下になる数値をansに足していき、最後にansを出力して完了です。