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\) 進表記したときの 01 に,12 に,20 に変換する.

こうしてできた数の先頭はすべて \(0\) であり,また互いに異なります. 同様に,次の変換も考えます.

  • \(3\) 進表記したときの 02 に,10 に,21 に変換する.

こうして作った \(3N\) 個の数は条件を満たすので,これを出力すればよいです.

posted:
last update: