0
0

More than 3 years have passed since last update.

[Ruby] AtCoder 過去問 B - Digit Sums

Posted at

はじめに

AtCoderのB問題 Digit SumsをRubyで解いてみました。

問題の確認は下記からお願いします。
他のやり方などご教授いただけると幸いです。
それではよろしくお願いします。

B - Digit Sums

まずは入力の受け取りです。
今回は数値を一つだけ受け取ればいいので下記のように記述するだけで十分です。

n = gets.to_i

この数字を桁ごとに分解して、それらを足し算する必要があります。
このとき私は、まず文字列に変換して、charsメソッドで一文字ずつに分けて、再度数値に戻して。。。と考えていましたが、とても便利なメソッド、digitsメソッドを見つけましたのでこちらを活用したいと思います。

使い方は下記の記事にまとめておきました。

簡単にいうと数値を桁ごとに分けて配列で返してくれます。
さらにその配列の要素をsumメソッドで足して、変数に入れておきます。

n = gets.to_i

n_sum = n.digits.sum

上記の記述で問題の↓の部分はクリアです。

整数 nに対して,nを十進法で表したときの各桁の和を S(n)で表すことにします. たとえばS(101) = 1 + 0 + 1 = 2です。

あとはこのn_sumでnが割り切れるかどうかをif文の条件式で分岐させて、trueならYes、falseならNoを出力させます。

n = gets.to_i

n_sum = n.digits.sum

if n % n_sum == 0
  puts "Yes"
else
  puts "No"
end

終わりに

digitsメソッドの収穫は大きかったです。
他にも便利なメソッドや解法があれば教えていただければ幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0