updown...

いろいろな備忘録

コインゲームのヒント解説

AtCoderで解いた問題の自分向けの備忘録です

atcoder.jp

問題文

あなたは、500 円玉を A 枚、100 円玉を B 枚、50 円玉を C 枚持っています。 これらの硬貨の中から何枚かを選び、合計金額をちょうど X 円にする方法は何通りありますか。 同じ種類の硬貨どうしは区別できません。2 通りの硬貨の選び方は、ある種類の硬貨についてその硬貨を選ぶ枚数が異なるとき区別されます。

  • 0≤A,B,C≤50
  • A+B+C≥1
  • 50≤X≤20,000
  • A,B,C は整数である
  • X は 50 の倍数である

それぞれのコイン ( a, b, c ) と合計金額( x )は標準入力で指定されます

解き方としてはそれぞれのコインの組み合わせが合計金額の時にカウントを増やしていけばいいのでループ処理で組み合わせを探せばいいのでは?

# 標準入力
a = gets.to_i
b = gets.to_i
c = gets.to_i
x = gets.to_i

# カウントの初期化
count = 0

# ループ処理
(0..a).each do |na|
  (0..b).each do |nb|
    (0..c).each do |nc|
      count += 1 if (500 * na) + (100 * nb) + (50 * nc) == x
    end
  end
end

# 最後に出力を忘れずに
puts count

以上が回答です