값 n이 주어졌을 때, n번째 중심 구각수(centered nonagonal number)를 계산하고 n까지의 중심 구각수 수열을 생성한 뒤 그 결과를 출력하는 C++ 프로그램을 만들어 보겠습니다.
중심 구각수란?
중심 구각수는 하나의 중심점을 기준으로 점(dot)들이 구각형(9각형) 모양의 층을 이루며 겹겹이 쌓인 형태입니다. 가운데 점 하나를 두고 그 주위로 구각형 테두리가 차례대로 둘러싸인 도형에서 점의 총 개수가 바로 중심 구각수가 됩니다.

위 그림은 두 번째 중심 구각수 N2를 나타낸 것입니다. 중심 구각수는 다음 공식으로 계산할 수 있습니다.
Nc(n) = (3n − 2) × (3n − 1) / 2
예를 들어 n = 5라면 (15 − 2) × (15 − 1) / 2 = 13 × 14 / 2 = 91이 되므로, 다섯 번째 중심 구각수는 91입니다.
입력 · 출력 예시
입력
number: 20
출력
centered nonagonal number : 1711
입력
number: 10
출력
centered nonagonal series : 1 10 28 55 91 136 190 253 325 406
알고리즘
시작
1단계 → 중심 구각수를 계산하는 함수 선언
int calculate_number(int num)
return (3 * num - 2) * (3 * num - 1) / 2
2단계 → 중심 구각수 수열을 계산하는 함수 선언
int calculate_series(int num)
Loop For int i = 1 and i <= num and i++
Print (3 * i - 2) * (3 * i - 1) / 2
End
3단계 → main() 함수에서
int num = 20 선언
calculate_number(num) 호출
num = 10 선언
calculate_series(num) 호출
종료
C++ 구현 예제
#include <bits/stdc++.h>
using namespace std;
// 중심 구각수를 계산하는 함수
int calculate_number(int num){
return (3 * num - 2) * (3 * num - 1) / 2;
}
// n까지의 중심 구각수 수열을 출력하는 함수
int calculate_series(int num){
for (int i = 1; i <= num; i++){
cout << (3 * i - 2) * (3 * i - 1) / 2;
cout << " ";
}
}
int main(){
int num = 20;
cout << "centered nonagonal number : " << calculate_number(num) << endl;
num = 10;
cout << "centered nonagonal series : ";
calculate_series(num);
return 0;
}
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
centered nonagonal number : 1711 centered nonagonal series : 1 10 28 55 91 136 190 253 325 406