AtCoder Beginner Contest 083 ~ B – Some Some

開発

問題

回答例

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# AtCoder Beginner Contest 083
# B - Some Sums

# 入力値を取得する
N, A, B = list(map(int, input().split()))

def sum_digit(num: int) -> int:
    """入力値の各桁の合計値を算出する

    Args:
        num (int): 数値

    Returns:
        int: numの各桁の和
    """
    result = sum(map(int, str(num)))
    return result

# 各桁の和がA以上、B以下の数の総和をansに入れる
ans = 0
for i in range(1, N+1):
    if A <= sum_digit(i) and sum_digit(i) <= B:
        ans += i

# 結果を出力する
print(ans)

"各桁の和"というのが何を意味するのか一瞬わかりませんでした。

例えば 11 なら 1+1 = 2 ということですね。

その和がA以上B以下になるとその数値は総和を求める対象になりますと。

ということで、Nまでの整数をrangeを使って生成して、1つづつ"各桁の和"を求めてA以上B以下の条件を満たす数字を足していって総和を求めると上記のようになりました。

コメント

タイトルとURLをコピーしました