0
0

More than 1 year has passed since last update.

[Ruby] AtCoder過去問 B - Count Balls

Posted at

はじめに

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
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