728x90
반응형
문제:
어떤 동물원에 가로로 두 칸 세로로 N칸인 아래와 같은 우리가 있다.
이 동물원에는 사자들이 살고 있는데 사자들을 우리에 가둘 때, 가로로도 세로로도 불어 있게 배치할 수는 없다.
이 동물원 조련사는 사자들의 배치 문제 때문에 골머리를 앓고 있다.
동물원 조련사의 머리가 아프지 않도록 우리가 2*N 배열에 사자를 배치하는 경우의 수가 몇 가지인지를 알아내는 프로그램을 작성해 주도록 하자. 사자를 한 마리도 배치하지 않는 경우도 하나의 경우의 수로 친다고 가정한다.
입력:
첫째 줄에 우리의 크기 N(1<=N<=100,000)이 주어진다.
출력:
첫째 줄에 사자를 배치하는 경우의 수를 9901로 나눈 나머지를 출력하여라.
풀이 방법:
dp문제인데 N마다 생성되는 규칙을 찾아내거나 아니면 점화식을 찾으면 된다. 따라서 찾은 점화식은 다음과 같다.
an = a(n-1) + 2*a(n-2)
따라서 이 규칙에 따라서 값을 구해주면 된다.
1
2
3
4
5
6
7
8
9
10
11
12
|
n=int(input())
answer=1
first=3
if n==1:
print(first)
else:
while n!=1:
temp=first
first=(2*first+answer)%9901
answer=temp
n-=1
print(first)
|
cs |
문제 링크:
https://www.acmicpc.net/problem/1309
728x90
반응형
'Algorithm > Python' 카테고리의 다른 글
[BOJ]1389. 케빈 베이컨의 6단계 법칙 (0) | 2019.08.21 |
---|---|
[BOJ]4307. 개미 (0) | 2019.08.06 |
[BOJ]5430. AC (0) | 2019.08.04 |
[BOJ]2312. 수 복원하기 (0) | 2019.08.03 |
[BOJ]15649. N과M(1),(2) (0) | 2019.08.02 |