問題
あなたは、500 円玉を A 枚、100 円玉を B 枚、50 円玉を C 枚持っています。 これらの硬貨の中から何枚かを選び、合計金額をちょうど X 円にする方法は何通りありますか。
同じ種類の硬貨どうしは区別できません。2 通りの硬貨の選び方は、ある種類の硬貨についてその硬貨を選ぶ枚数が異なるとき区別されます。
制約
- 0≤A,B,C≤500
- A+B+C≥1
- 5≤X≤20,000
- A,B,C は整数である
- X は 50 の倍数である
入力例1 5 1 0 150 出力例1 0
自分の回答
def coins(yen500, yen100, yen50, input_price)
count = 0
(0..yen500).each do |a|
(0..yen100).each do |b|
(0..yen50).each do |c|
if a * 500 + b * 100 + c * 50 == input_price
count = count + 1
end
end
end
end
p count
end
yen500 = gets.chomp.to_i
yen100 = gets.chomp.to_i
yen50 = gets.chomp.to_i
input_price = gets.chomp.to_i
coins(yen500, yen100, yen50, input_price)
ちなみに、カンニングしました!うーんこれだと、500円の枚数が0とかだとうまくいかない気がするので、枚数の多い順に並べようとか考えた結果わからなくなったのですが、大丈夫みたいですね。もっと単純に考えれば良かった、、、。