##はじめに
AtCoder過去問をrubyで解いてみました。
よろしくお願いします。
問題はこちらから確認してください↓
##B - Coins
まずは入力を受け取ります。
改行されているのでreadlinesを使って受け取ります。
a, b, c, x = readlines.map(&:to_i)
繰り返し文を使うので変数countを用意して0を代入しておきます。
今回のポイントは繰り返し文をネストしていくということです。
今回は先に回答を記述します。↓
a, b, c, x = readlines.map(&:to_i)
count = 0
(0..a).each do |i|
(0..b).each do |j|
(0..c).each do |k|
if i * 500 + j * 100 + k * 50 == x
count += 1
end
end
end
end
puts count
三階層のネストをしています。
ネストにすることにより一番階層の深いkに0からcまでの値が全て入り終わるまでその一つ上の階層jの値は変わりません。
iとjを固定してkを全て試し、jに一つ変化を加えてまたiとjを固定してkを全て回して。。。
ということを繰り返します。
そうすることにより、手持ちの硬貨を使った、考えうる全てのパターンで計算しています。
その中でxと同じ金額になった時はcountに+1しています。
全てのパターンで計算し終わった後に、xと同じ金額になったパターンの数=答えです。