##はじめに
AtCoderの過去問B問題をRubyで解いてみました。
よろしくお願いします。
問題はこちらから確認してください↓
##B - Chocolate
まずは入力を受け取ります。
aは配列として受け取るようにしています。
答えはチョコの数なので変数chocoに0を代入しておきます。
n = gets.to_i
d, x = gets.split.map(&:to_i)
a = readlines.map(&:to_i)
choco = 0
まずは法則を考えます。
私は割り算でこの問題を考えました。
①まず、dをそれぞれの日数で割った時あまりなく、ちょうどで割り切れた場合はチョコを割った答えがチョコを食べた数です。
→この法則は入力例2の一人目や入力例3の最後のひと(6の人)に当てはめて計算してみたらわかります。
②もし、dをそれぞれの日数で割った時、あまりがある場合は割った答え+1がチョコを食べた数です。
③もし入力例1の3人目の人のように10の人はdを超えているので最初の1日目しかチョコを食べることができません。(10日後に食べる予定ですが、その日はこないため)
上記を踏まえてeach文でそれぞれの合宿参加者ごとに、条件分岐し、chocoに追加していきます。
n = gets.to_i
d, x = gets.split.map(&:to_i)
a = readlines.map(&:to_i)
choco = 0
a.each do |i|
if d % i == 0
choco += d / i
elsif i <= d
choco += d / i + 1
else
choco += 1
end
end
そして最後に余ったxをchocoに追加したら、準備されていたチョコの数が出てきます。
n = gets.to_i
d, x = gets.split.map(&:to_i)
a = readlines.map(&:to_i)
choco = 0
a.each do |i|
if d % i == 0
choco += d / i
elsif i <= d
choco += d / i + 1
else
choco += 1
end
end
puts choco += x