ABC087B Coins

Coins

ABC087B Coins
AtCoder Beginners Selectionより。
500円玉をA枚、100円玉をB枚、50円玉をC枚持っているとき、これらの硬貨の中から何枚か選んで合計金額をちょうどX円にする方法は何通りあるか、という問題です。
1ループが硬貨1種類に対応するような3重ループを回して全探索しています。

#include <iostream>

// geschrieben von Beliar698ma

int main() {
  int a, b, c, sum;
  std::cin >> a >> b >> c >> sum;
  int cases = 0;
  int total = 0;
  for (int i = 0; i <= a; i++) {
    for (int j = 0; j <= b; j++) {
      for (int k = 0; k <= c; k++) {
        total = 500 * i + 100 * j + 50 * k;
        if (total == sum) cases++;
      }
    }
  }
  std::cout << cases << "\n";
}

入力例(標準入力)

2
2
2
100
        

出力例(標準出力)

コインを全種各2枚持っている場合、ちょうど100円にするには
・100円玉が1枚
・50円玉が2枚
の二通りがあり得るので、出力は以下となります。
2
        

動作が気になりましたらpaiza.ioなどで上記のコードをテストしてみてください。