Official
B - Ternary Strings Editorial by maroonrk_admin
文字列ではなく,\(3\) 進数をつくると考えます. \(0\) 埋めで桁数を統一しているため,辞書順最大は数としての最大と同値です.
\(2\) から始まる数が \(N\) 個必要です. よって,\(2 \times 3^{(L-1)} +N-1 \leq t\) がまず従います. 実はこれを達成することができます.
\(2 \times 3^{(L-1)},2 \times 3^{(L-1)}+1,\cdots,2 \times 3^{(L-1)}+N-1\) をまず用意します. これらの数それぞれについて,次の変換を行います.
- \(3\) 進表記したときの
0
を1
に,1
を2
に,2
を0
に変換する.
こうしてできた数の先頭はすべて \(0\) であり,また互いに異なります. 同様に,次の変換も考えます.
- \(3\) 進表記したときの
0
を2
に,1
を0
に,2
を1
に変換する.
こうして作った \(3N\) 個の数は条件を満たすので,これを出力すればよいです.
posted:
last update: