https://www.acmicpc.net/problem/9461
9461번: 파도반 수열
문제 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 길이를 k라 했을 때, 그 변에 길이가 k인 정삼각형을 추가한다. 파도반 수열 P(N)은 나선에 있는 정삼각형의 변의 길이이다. P(1)부터 P(10)까지 첫 10개 숫자는 1, 1, 1, 2, 2, 3, 4, 5, 7, 9이다. N이 주어졌을 때, P(N)을 구하
www.acmicpc.net
실버 3이라 그런지 정말 쉽다. 삼각형을 보다 보면 N번째 삼각형의 변의 길이는 N-1번째와 N-5번째 삼각형의 길이를 합한 것임을 눈치챌 수 있다.
다만, 100번째 삼각형의 변의 길이는 int형의 범위를 넘음에 주의하자. 배열의 자료형을 long long int로 선언하면 해결 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#include <stdio.h>
long long N[101]={1,1,1,2,2,3,4,5,7,9,};
int main(void){
for(int i=10; i<101; i++){
N[i]=N[i-1]+N[i-5];
}
int T;
scanf("%d",&T);
int test;
for(int j=0; j<T; j++){
scanf(" %d",&test);
printf("%lld\n",N[test-1]);
}
}
|
'알고리즘 문제' 카테고리의 다른 글
[C/C++ 백준 1699번] 제곱수의 합 (Silver 3) (0) | 2020.05.05 |
---|---|
[C/C++ 백준 1912번] 연속합 (Silver 2) (0) | 2020.05.05 |
[C/C++ 백준 2193번] 이친수 (Silver 3) (0) | 2020.05.05 |
[C/C++ 백준 2579번] 계단 오르기 (Silver 3) (0) | 2020.05.04 |
1일 1개 알고리즘 문제 풀기 (0) | 2020.05.04 |