第6話 いくつかの和たち
はじめに
こちらでは,競技プログラミングコンテストサイトAtCoderの常設コンテスト「AtCoder Beginners Selection」に筆者が挑戦します.記事には,筆者が作成したコード(使用言語はPython)と簡単な解説を載せますので,プログラミング初心者の方の参考になれば幸いです.なお,この記事では,Pythonの詳細な文法については解説致しませんので,そちらに関しては関連記事および文献等を参照して頂きたく存じます.
問題(ABC083B - Some Sums)
1 以上 NN以下の整数のうち,10進法での各桁の和がA以上B以下であるものの総和を求めてください.
コード(解答例)
N, A, B = map(int, input().split())
sum = 0
for num in range(N+1):
sum_digit = 0
num_str = str(num)
for i in range(len(num_str)):
sum_digit += int(num_str[i])
if (sum_digit >= A and sum_digit <= B):
sum += num
print(sum)
解説
各桁の数字を扱いやすくするために,数字を敢えて文字列に変換しています.文字列に変換したのち,各インデックスの文字(各桁の数字に対応)をint()関数で整数に変換します.そして,各桁の数字の和がA以上かつB以下であれば,該当する数(num)を求める和(sum)に加算していくという流れですね!