AtCoder ABC 080 B – Harshad Number Python解説

スポンサーリンク

Harshad Number

整数 X を十進法で表したときの各桁の数字の和を f(X) としたとき、X が f(X) で割り切れる場合、X はハーシャッド数です。

整数 N が与えられるので、ハーシャッド数かどうか判定してください。

AtCoder Beginner Contest 080 「Harshad Number」

問題自体は各桁の数字の和を取得さえできれば簡単に解けると思います。
まずは、与えられた整数Xを10で割っていく方法。

x = int(input())
n = x
s = 0

while n > 0:
    s += n % 10
    n //= 10
    
if x % s == 0:
    print("Yes")
else:
    print("No")

整数Xの各桁を10で割り、余りを求めることで各桁の数字の和を取得しています。
よく使われるやり方なので知っておくと便利ですよ。

x = input()

s = sum(list(map(int, x)))
x = int(x)

if x % s == 0:
    print("Yes")
else:
    print("No")

こちらは受け取った入力を配列に入れ、sum関数で各桁の数字の和を取得しています。
なかなか面白い方法だと思います。

最後に整数Nを数字の和で割り切れるか調べて、ハーシャッド数か判定します。