murnana's diary

のんびり書きます。マサカリまってます(震えながら

ABC080 B - Harshad Number の復習

B - Harshad Number

ハーシャッド数が分からず、ググったはいいが解き方がわからなかった問題。

ハーシャッド数とは

例えば、195 は各位の和が 1 + 9 + 5 = 15 であり、15 は 195 の約数であるので 195 はハーシャッド数である

あ、なんか聞いたことあるような…?
博士の愛した数式だったかな?

解き方の解説

123456を全部足すと、21になる
ということで、まずは全部足す。

足した合計21で元の数123456を割ったあまりがぴったりだと、ハーシャッド数であるといえる。

とりあえず素直に一桁ずつ取り出す

まず、一の位しかない数字(=10未満の数字)はそのまま使える。
他をどうするのか。

さっきの123456を見てみると、実は 12345 = 123456 / 10
6 = 123456 % 10
ということがわかる。
これにより、一番左端の桁の数字を取り出すことができる。

つまり、再起関数を使ってすべての桁の数を取り出し、計算することができる。

文字列にしてしまえ!

JavaScriptだったらそうしていたかな…
ああ、そうすればよかった…