세제곱합(Cube Sum)이란?
처음 n개의 자연수의 세제곱합이란, 1부터 n까지의 모든 자연수를 각각 세제곱한 뒤 모두 더한 값을 의미합니다. 즉, 다음과 같은 급수의 합입니다.
1³ + 2³ + 3³ + … + n³
입력 및 출력 예시
입력: 6
출력: 441
계산 과정 설명
n이 6일 경우, 각 자연수를 세제곱하여 더하면 다음과 같습니다.
1³ + 2³ + 3³ + 4³ + 5³ + 6³
= 1 + 8 + 27 + 64 + 125 + 216
= 441
for 반복문을 이용한 구현
for 반복문으로 숫자를 1부터 n까지 하나씩 증가시키면서, 각 숫자를 세제곱한 값을 누적 변수에 더하면 세제곱합을 손쉽게 구할 수 있습니다.
#include <stdio.h>
int main() {
int n = 6;
long long sum = 0;
for (int i = 1; i <= n; i++) {
sum += (long long)i * i * i;
}
printf("%lld\n", sum);
return 0;
}
위 코드에서는 n이 커질 때 세제곱값이 int 범위를 초과할 수 있으므로, 오버플로우를 방지하기 위해 long long 타입을 사용했습니다. 코드를 실행하면 6의 세제곱합인 441이 출력됩니다.
수학 공식을 이용한 효율적인 방법
반복문 없이 다음 공식을 활용하면 O(1)의 시간 복잡도로 결과를 바로 계산할 수 있습니다.
세제곱합 = (n × (n + 1) / 2)²
#include <stdio.h>
int main() {
int n = 6;
long long base = (long long)n * (n + 1) / 2;
printf("%lld\n", base * base);
return 0;
}
이 공식은 "처음 n개 자연수의 합의 제곱"이 곧 세제곱합과 같다는 잘 알려진 수학적 성질을 이용한 것으로, n이 매우 큰 경우에도 빠르게 결과를 얻을 수 있다는 장점이 있습니다.