AtCoder Beggineres Selection、問6 ABC083B – Some Sums です
問題文
1 以上 N 以下の整数のうち、10 進法での各桁の和が A 以上 B 以下であるものの総和を求めてください。
制約
・1 ≤ N ≤ 104
・1 ≤ A ≤ B ≤ 36
・入力はすべて整数である
入力は以下の形式で標準入力から与えられる。
N A B
出力
1 以上 N 以下の整数のうち、10 進法での各桁の和が A 以上 B 以下であるものの総和を出力せよ
問題文の通りに愚直に計算しましょう
def MakeSumOfDigits(number):
sum = 0
while number > 0:
surplus = number % 10
sum = sum + surplus
number = number // 10
return (sum)
total = 0
for i in range(1, N+1):
sum_of_digits = MakeSumOfDigits(i)
if (A <= sum_of_digits) and (sum_of_digits <= B):
total = total + i
print(total)
MakeSumOfDigits()は「10で割った余りで1の位の値を得て、元の数を10で割る」を元の数が0まで繰り返しています。
最初は number = int(number / 10) にしていましたが // という「除算の整数部分を返す」という便利な演算子が有るのを知って使ってみました。
上記のコードで提出。ん?すべて RE
ローカル環境だと正解が出たのに。なんでだろ?
時間の都合で続きは明日。
(8月5日 追記)
入力を書いてませんでした。そりゃ落ちるわ。。。
以下を1行目に追加したら AC になりました。
N, A, B = map(int, input().split())


コメント