Хроніки Архіваріуса R2-A2#11846

Хроніки Архіваріуса R2-A2 (Розбір)

Побудуємо перші декілька рядків:

\begin{aligned} S_{0}&: A,\\ S_{1}&: C,\\ S_{2}&: B,\\ S_{3}&: BCA=S_{2}S_{1}S_{0},\\ S_{4}&: BCABC=S_{3}S_{2}S_{1},\\ S_{5}&: BCABCBCAB=S_{4}S_{3}S_{2},\;\text{тощо.} \end{aligned}

Видно, що починаючи з

\boxed{\, S_{t}=S_{t-1}\,S_{t-2}\,S_{t-3}\,}.

Позначимо T_{t}=|S_{t}|. Тоді

T_{0}=T_{1}=T_{2}=1,\qquad T_{t}=T_{t-1}+T_{t-2}+T_{t-3}\;\;(t\ge 3),

тобто послідовність трибоначчі. Для першого значення достатньо однієї лінійної динаміки з одночасним взяттям за модулем M=10^{9}+7:

T_{t}\equiv T_{t-1}+T_{t-2}+T_{t-3}\pmod{M}.

Давайте знайдемо символ на позиції через рекурсію. Нехай функція f(t,k) повертає символ на позиції у рядку S_{t}. Базові випадки:

f(0,1)=A,\quad f(1,1)=C,\quad f(2,1)=B.

Для t\ge 3 маємо три блоки довжин T_{t-1}, T_{t-2} та T_{t-3}. Рекурсивний перехід:

f(t,k)= \begin{cases} f(t-1,k), & k\le T_{t-1},\\ f(t-2,k-T_{t-1}), & T_{t-1}<k\le T_{t-1}+T_{t-2},\\ f(t-3,k-T_{t-1}-T_{t-2}), & \text{інакше.} \end{cases}

Отже відповідь це T_n та f(n, k). Загальна часова складність .