D - 語呂合わせ (abc031_d) 3進数クラスを導入

Quiz

https://atcoder.jp/contests/abc031/tasks/abc031_d

Submit

https://atcoder.jp/contests/abc031/submissions/3993696

その他

  • 3進数クラスを導入
    • 1 1 1, 2 1 1, 3 1 1, 繰り上がって 1 2 1, ...
  • きれいには書けていない。矛盾チェックも数カ所あるし仕方ないか
  • 矛盾チェック部分を関数に切り出したのはテストしやすくなって良かった

追記:より良い方法

// 各数字の長さを生成
    vector<string> S;
    S.push_back("");
    FOR(i, 0, K){
        vector<string> T;
        for(string s : S){
            T.push_back("1"+s);
            T.push_back("2"+s);
            T.push_back("3"+s);
        }
        S = T;
    }
    sort(ALL(S));

/* 
たとえばK=6なら
111111
111112
111113
111121
...
333333
までを生成
*/