解説
制約より1135数の個数は106以下であるため、1135数を全列挙することを考えます。簡単のため、1の位を排除して考えることにします。
1135数の10の位以降の数字は、各桁の数字を di(1≤i≤k,1≤di) として、i=1∑kdi≤9 となり、このことから k≤9 つまり、1135数の10の位以降の数字は高々9桁であることが分かります。
では、具体的な di の値の構築を考えてみましょう。ここで、i=1∑kdi=c (1≤c≤9)と分解して考えてみます。
このときのdi の値は、「 c 個のボールをk−1個の仕切りで k 個の区別のある空間に(各空間に必ず1つ以上のボールがあるという条件の下で)区切ったときの各空間にあるボールの数」に等しいと考えることができます。
例えばc=4のとき、d=(1,3)は o|ooo 、d=(1,2,1)は o|oo|o 、といった具合に表すことができます。仕切りの入れ方はそれぞれのボールの間に仕切りを入れるか、入れないかを全探索することで求めることができ、c=i のとき (2i−1)通りあります。これを全てのc=i(1≤i≤9)について調べることで1135数を全て列挙することができます。1135数を全列挙するのにかかる時間計算量はO(i=1∑ki×2i−1)=O(k×2k)であり、k≤9 より1135数を全列挙しても余裕をもって実行時間制限に間に合います。あとは列挙した1135数を小さい順にソートした上でN番目の1135数を出力すればよいです。よって、この問題を解くことができました。
ex.
1135数の総数は i=1∑92i−1=511 です。