[AtCoder]ABC087B – Coins[Ruby]

プログラミング

問題

あなたは、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とかだとうまくいかない気がするので、枚数の多い順に並べようとか考えた結果わからなくなったのですが、大丈夫みたいですね。もっと単純に考えれば良かった、、、。

タイトルとURLをコピーしました