문제
풀이
$N \equiv 1 \pmod 2$인 경우는 해가 존재하지 않음을 직관적으로 알 수 있습니다.
$N \equiv 0 \pmod 2$인 경우만 살펴봅시다. $N = i$인 경우의 답을 $T_i$라 합시다. 초기값으로 $T_0 = 1$입니다.
위 사진을 통해 아래와 같은 점화식을 구할 수 있습니다.
\[T_i = 3T_{i - 2} + 2(T_{i - 4} + T_{i - 6} + \dots + T_0)\]여기서 $i$ 대신 $i + 2$를 대입해 아래와 같은 식을 얻습니다.
\[T_{i + 2} = 3T_i + 2(T_{i - 2} + T_{i - 4} + \dots + T_0)\]이제 $T_{i + 2}$에서 $T_i$를 빼서 아래의 식을 얻습니다.
\[\begin{align} T_{i + 2} - T_i &= 3T_i - T_{i - 2} \\ T_{i + 2} &= 4T_i - T_{i - 2} \end{align}\]그렇다면 행렬을 이용해 아래와 같이 나타낼 수 있습니다.
\[\begin{bmatrix} 4 & -1 \\ 1 & 0 \end{bmatrix} \begin{bmatrix} T_i \\ T_{i - 2} \end{bmatrix} = \begin{bmatrix} T_{i + 2} \\ T_i \end{bmatrix}\]여기서 $T_0 = 1$이고 $T_2 = 3$이므로
\[\begin{bmatrix} 4 & -1 \\ 1 & 0 \end{bmatrix}^{k - 1} \begin{bmatrix} 3 \\ 1 \end{bmatrix} = \begin{bmatrix} T_{2k} \\ T_{2k - 2} \end{bmatrix}\]이제 분할 정복을 이용한 거듭제곱을 통해 $T_N$을 계산해주면 됩니다.
코드
1 | |