はじめに
AtCoder過去問B問題をRubyで解いてみました。
変数名の付け方が下手くそなのは目を瞑ってください。
よろしくお願いします。
問題はこちらから確認してください↓
B - Count Balls
まずは入力を受け取ります。n, a, bと順番に受け取ります。
n, a, b = gets.split.map(&:to_i)
a+bを1セットとして考えます。まずはnの中に、a+bが何セットあるか調べます。
そのセット数をball_setsの中に代入しておきます。
n, a, b = gets.split.map(&:to_i)
ball_sets = n / (a + b)
次にセットからはみ出した(セットにできなかった)ボールを調べます。
n % (a + b)
ではみ出したボールの数が分かります。
変数remainder_ballに入れておきます。
n, a, b = gets.split.map(&:to_i)
ball_sets = n / (a + b)
remainder_ball = n % (a + b)
続いてセットでまとめることができたボールたちの中に青いボールがいくつあるかを調べます。
a×セット数で求められます。blue_setsの中に入れておきます。
n, a, b = gets.split.map(&:to_i)
ball_sets = n / (a + b)
remainder_ball = n % (a + b)
blue_sets = a * ball_sets
セットにできなかったボールに関しては、a(1セットの青いボールの数)からremainder_ballを引きます。変数cの中に入れておきます。
n, a, b = gets.split.map(&:to_i)
ball_sets = n / (a + b)
remainder_ball = n % (a + b)
blue_sets = a * ball_sets
c = a - remainder_ball
もしその答えcが0よりも大きかったら、セットからはみ出たボールが全て青いボールなのでblue_setsにremainder_ballを追加して出力させます。
もしcが0以下だったら、1セットの青いボール分が全て追加されるので、blue_setsにaを足して出力させます。
n, a, b = gets.split.map(&:to_i)
ball_sets = n / (a + b)
remainder_ball = n % (a + b)
blue_sets = a * ball_sets
c = a - remainder_ball
if c > 0
puts blue_sets + remainder_ball
else
puts blue_sets + a
end