もどくんちゃんねる ガジェット部

自転車、ガジェット、映像制作、CG、Blender など

【C++】硬貨の中から何枚かを選び、合計金額をちょうど X 円にする方法

こんにちは、今日は競プロをやっていて恥ずかしながら詰まったのでやり方を紹介します。

問題

 円玉を A 枚、100 円玉を B 枚、10501010 円玉を C 枚持っています。 これらの硬貨の中から何枚かを選び、合計金額をちょうど X 円にする方法は何通りありますか。

ただし、Xは10の倍数とする。

 

入力例

 

出力

 

答え

#include <iostream>
using namespace std;

int main(){
    int A,B,C;
    int X;
    int count=0;
    int SUM = 0;

    cin >> A;
    cin >> B;
    cin >> C;
    cin >> X;

    for (int a = 0; a <= A; ++a) {
        for (int b = 0; b <= B; ++b) {
            for (int c = 0; c <= C; ++c) {
          SUM=0;
                SUM = 1000*a + 100*b + 10*c;
                if (SUM == X) ++count;
            }
        }
    }
 
    cout << count <<endl;

}
 

解説

競技プログラミングの問題だから、3重ループを使ってはだめだと思ったあなた!

もう何も思いつかなかったら使うしかありません!

3重ループを使って愚直に全探索しちゃいましょう!

以上です。