公式
B - Ternary Strings 解説 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\) 個の数は条件を満たすので,これを出力すればよいです.
投稿日時:
最終更新: