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を出力して完了です。