[PS規格-2.9]10448号:ユリカ理論


問題情報


白駿10448号-ショートカット
  • 難易度:ブロンズ2
  • アルゴリズム:ルーティング転送アルゴリズム
  • コメント


    1000以下のすべての三角数を求め,三重複文で三数加算を選択し,nC 3{n}mathm{C}{3}nC 3の場合を探索した.

    ソースコード

    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <string>
    
    using namespace std;
    
    int main() {
        ios::sync_with_stdio(false); 
        cin.tie(0); 
        cout.tie(0);
        
        int n, x;
        cin >> n;
        vector<int> tri;
        int cc = 1;
        while (cc * (cc + 1) / 2 <= 1000) {
            tri.push_back(cc * (cc + 1) / 2);
            cc++;
        }
    
        for (int i = 0; i < n; i++) {
            cin >> x;
    
            int r = 0, flag=0;
            for (int a = 0; a < tri.size(); a++) {
                for (int b = 0; b < tri.size(); b++) {
                    for (int c = 0; c < tri.size(); c++) {
                        r = tri[a] + tri[b] + tri[c];
                        if (r == x) {
                            flag = 1;
                            break;
                        }
                    }
                    if (r == x) break;
                }
                if (r == x) break;
    
            }
            if (flag) cout << 1  << "\n";
            else cout << 0 << "\n";
    
    
        }
    }