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

追記:2021/09/29

今見ると拙いな^^;

Quiz

AC

その他

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

追記:より良い方法

// 各数字の長さを(文字列として)生成
// "112"なら、1の長さ=1, 2の長さ=1, 3の長さ=2
vector<string> S;
S.push_back("");
FOR(i, 0, K){ // 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
までを生成
*/