BOJ 18122 : 색깔 하노이 탑
2022. 2. 5. 02:40ㆍPS/Math
그림을 그리면서 관찰을 해보자.
먼저 n번째 원판들이 1->3으로 갈 때 옮기는 횟수는 n=1일 경우 3, n>1일 경우 2^(n+1)임을 알 수 있다.
그렇다면 이를 n번째 원판들까지 있다고 할 때 옮기는 총 횟수를 식으로 나타내보자.
2^(n+1)+2^n+2^(n-1).....+2^3+3
= 2^(n+1)+2^n+2^(n-1).....+2^3+2^2+2^1+2^0-4
= 2^(n+1)+2^n+2^(n-1).....+2^3+2^2+2^1+2^0+1-5
= 2^(n+2)-5
가 된다.
이제 이걸 계산해주면 되는데, 아주 큰 수를 계산한 나머지를 요구한다.
큰 수 계산, 거듭제곱 계산에는 Python이 더 유리하므로 파이썬으로 풀었다.
C++로 한다면, n의 최대가 10^6이므로 그냥 O(n)으로 곱하고 나머지 구해서 하면 된다.
'PS > Math' 카테고리의 다른 글
BOJ 2500 : 복불복 (1) | 2021.08.17 |
---|---|
BOJ 2487 : 섞기 수열 (0) | 2021.05.11 |
BOJ 9735 : 삼차 방정식 풀기 (0) | 2020.08.25 |
BOJ 4375 : 1 (0) | 2020.05.31 |