본문 바로가기

분할 정복을 이용한 거듭제곱/행렬 거듭제곱

(61)
백준 13430번: 합 구하기 www.acmicpc.net/problem/13430 13430번: 합 구하기 첫째 줄에 k와 n이 주어진다. (1 ≤ k ≤ 50, 1 ≤ n ≤ 1,000,000,000) www.acmicpc.net 기본적인 아이디어를 얻기 위해 작은 경우부터 나열해보는 게 좋은 문제입니다. $S\left ( i,j \right)$ 의 값은 $i=0$ 일 때 : $1$, $2$, $3$, $4$, $5$, $\cdots$ $i=1$ 일 때 : $1$, $3$, $6$, $10$, $15$, $\cdots$ $i=2$ 일 때 : $1$, $4$, $10$, $20$, $35$, $\cdots$ $i=3$ 일 때 : $1$, $5$, $15$, $35$, $70$, $\cdots$ $i=4$ 일 때 : $1$, $6$,..
백준 16467번: 병아리의 변신은 무죄 www.acmicpc.net/problem/16467 16467번: 병아리의 변신은 무죄 학교공부를 끝내고 집을 가던 다진이는 길가에서 병아리를 팔고 있는 아저씨를 발견했다. 병아리를 무척 사고 싶었던 다진이는 병아리의 상태를 확인하지도 않고 한 마리를 사서 집으로 향했다 www.acmicpc.net 이전에 올렸던 (백준 17272번: 리그 오브 레전설 (Large))과 상당히 비슷한 문제라고 할 수 있습니다. 주어진 힌트를 잘 분석하면, $i$ 번째 날에 처음 등장한 알은 $i+K$ 번째 날에 병아리가 된다는 걸 알 수 있습니다. $i$ 번째 날의 병아리의 수를 $A_{i}$ 라고 표기하겠습니다. $i$ 번째 날에 처음 등장한 알은 곧 $i-1$ 번째 날의 병아리들이 낳은 알이므로 그 개수가 $A_{i..
백준 17272번: 리그 오브 레전설 (Large) www.acmicpc.net/problem/17272 17272번: 리그 오브 레전설 (Large) 규환이는 리그 오브 레전설이라는 게임을 좋아한다. 이 게임에서는 N초의 시간 동안 싸움을 하는데, 규환이가 플레이하는 캐릭터는 A, B 두 가지 스킬을 사용할 수 있다. A 스킬의 시전 시간은 1 www.acmicpc.net 이 문제와 비슷한 형태의 행렬 점화식이 문제에서 종종 나오는데, 난이도가 꽤 있는 유형이라고 생각합니다. 시간이 N일 때 가능한 스킬 조합의 수를 $A_{N}$ 이라고 해보겠습니다. 우선 간단한 경우를 먼저 탐색해보기 위해 $M=2$ 라고 해보겠습니다. 그 경우 $A_{1}=1,A_{2}=2,A_{3}=3,A_{4}=5,A_{5}=8,\cdots$ 나름대로 피보나치 수열과 비슷한 모습..
백준 13246번: 행렬 제곱의 합 www.acmicpc.net/problem/13246 13246번: 행렬 제곱의 합 첫째 줄에 행렬의 크기 N과 B가 주어진다. (2 ≤ N ≤ 5, 1 ≤ B ≤ 100,000,000,000) 둘째 줄부터 N개의 줄에 행렬의 각 원소가 주어진다. 행렬의 각 원소는 1,000보다 작거나 같은 자연수 또는 0이다. www.acmicpc.net 저번 글(백준 1492번: 합)과 비슷하게 $B$ 개의 항을 전부 구하려 하면 반드시 시간초과가 뜨게 되어있습니다. 즉 이번에도 적절한 방법을 찾아야 하는데, 다행히 1492번 보다는 쉽게 발견할 수 있는 편입니다. 본문의 기호를 좀 차용해서 다음과 같이 써보겠습니다. $S\left ( B \right )=A^{1}+A^{2}+\cdots+A^{B}$ $B$ 가 짝수..
백준 1160번: Random Number Generator www.acmicpc.net/problem/1160 1160번: Random Number Generator 첫째 줄에 6개의 정수 m, a, c, X0, n, g (m, a, c, X0, n ≤ 1018, g ≤ 108)가 차례대로 주어진다. a, c, X0는 음이 아닌 정수이고 m, n, g는 양의 정수이다. www.acmicpc.net 수열 $ X_{n} $ 의 점화식이 $ X_{n+1} = aX_{n}+c $ (mod $ m $) 으로 주어져 있습니다. 일반화된 식을 얻기 위해 점화식을 계속하여 풀어보면, 다음과 같은 결과가 나옵니다. $ X_{n+1}=aX_{n}+c=a^{2}X_{n-1}+c\left ( a+1 \right )=\cdots=a^{n+1}X_{0}+c\left ( a^{n}+\cd..
백준 15712번: 등비수열 www.acmicpc.net/problem/15712 15712번: 등비수열 첫째 줄에 a, r, n, mod가 공백으로 구분되어 주어진다. a, r, n, mod는 모두 1보다 크거나 같고, 109보다 작거나 같은 자연수이다. www.acmicpc.net 등비수열의 합은 $ a+ar+ar^{2}+\cdots+ar^{n-1} $ 입니다. 이는 a로 묶어보면 $ a\left ( 1+r+r^{2}+\cdots+r^{n-1} \right ) $ 입니다. 조금 뜬금없지만 이 행렬을 관찰하면, $ \begin{pmatrix} r & 0 \\ a & 1 \end{pmatrix} $ 이 사실을 발견할 수 있습니다. $ \begin{pmatrix} r^{2} & 0 \\ a\left ( r+1 \right ) & 1 ..
백준 14440번: 정수 수열 www.acmicpc.net/problem/14440 14440번: 정수 수열 첫째 줄에 x, y, a0, a1, n이 주어진다. (1 ≤ x, y ≤ 99, 0 ≤ n < 108) a0과 a1은 A0, A1의 마지막 두 자리이다. www.acmicpc.net 이전글 (백준 11366번: Tons of Orcs, no Fibbin') 이 기존 피보나치 수열에서 $ F_{0} $ 과 $ F_{1} $ 을 변형한 것이라면, 이번 문제는 $ A_{n+2}=x\times A_{n+1}+y\times A_{n} $ 으로, 피보나치 수열이 증가하는 규칙을 변형한 것입니다. 따라서, 다음 식과 같이 풀면 됩니다. (이때 $ x=y=1 $ 인 경우가 기존의 피보나치 수열) $ \begin{pmatrix} A_{n+1}..
백준 11366번: Tons of Orcs, no Fibbin' www.acmicpc.net/problem/11366 11366번: Tons of Orcs, no Fibbin’ The armies of Mordor are fearsome in both stature and numbers. How did they raise such a host in so short a time? It turns out, orcs breed very quickly. For any given year, their population equals the sum of the populations from the previous two years. For www.acmicpc.net 모르도르 (Mordor), 오크 (Orc) 같은 고유명사의 사용으로 보아 반지의 제왕을 패러디한 문제라는 걸 알..