#문제
https://www.acmicpc.net/problem/9461
#작성 코드
#include <cstdio>
int T, N;
long long int memo[101];
long long int pn(int n){
if( n==1 ) return 1;
if( n==2 ) return 1;
if( n==3 ) return 1;
if( n==4 ) return 2;
if( n==5 ) return 2;
if( n==6 ) return 3;
if( n==7 ) return 4;
if( n==8 ) return 5;
if( memo[n]!=0 ) return memo[n];
return memo[n] = pn(n-1)+pn(n-5);
}
int main(){
scanf("%d",&T);
for(int i=0; i<T; i++){
scanf("%d", &N);
printf("%lld\n", pn(N));
}
}
##
P(1) ~ P(6)까지는 주어진 수열을 그대로 사용하고,
P(7)부터 P(N) = P(N-1)+P(N-5) 라는 규칙이 생긴다.
'BOJ' 카테고리의 다른 글
BOJ 1149번 :: RGB거리 (0) | 2019.12.01 |
---|---|
BOJ 1260번 :: DFS와 BFS (0) | 2019.11.29 |
BOJ 1904번 :: 01타일 (0) | 2019.11.29 |
BOJ 14889번 :: 스타트와 링크 (0) | 2019.11.29 |
BOJ 1003번 :: 피보나치 함수 (0) | 2019.11.28 |