Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

1부터 n까지 자연수 제곱의 평균 구하기

숫자 n이 주어졌을 때, 1부터 n까지 자연수 각각의 제곱값에 대한 평균을 구하는 문제입니다. 풀이 과정은 다음 세 단계로 정리할 수 있습니다.

  1. 1부터 n까지 각 자연수의 제곱을 구합니다.
  2. 구한 제곱값들을 모두 더합니다.
  3. 그 합을 n으로 나누면 평균이 완성됩니다.

예시

입력: 3
출력: 4.666667

풀이 설명

1² + 2² + 3² = 1 + 4 + 9 = 14
14 ÷ 3 = 4.666667

즉, n = 3일 때 각 수를 제곱하여 더하면 14가 되고, 이를 개수인 3으로 나눈 값 4.666667이 바로 구하고자 하는 평균입니다.

수학적 공식

반복문 없이도 공식을 이용해 빠르게 계산할 수 있습니다. 자연수 제곱의 합은 다음과 같습니다.

Σ i² = n(n+1)(2n+1) / 6

따라서 제곱의 평균은 위 식을 n으로 나눈 (n+1)(2n+1) / 6이 됩니다.

C++ 구현 예제

#include<iostream>
using namespace std;
int main() {
    long n, i, sum = 0, d;
    n = 3;
    for(i = 1; i <= n; ++i) {
        d = i * i; // 각 수의 제곱 계산
        sum += d; // 제곱값 누적
    }
    cout << sum / n; // 평균 출력
    return 0;
}

위 코드는 반복문을 통해 1부터 n까지의 제곱값을 차례로 더한 뒤, 마지막에 n으로 나누어 평균을 출력하는 방식입니다. 시간 복잡도는 O(n)이며, 앞서 소개한 공식을 사용하면 O(1)로 더욱 효율적으로 계산할 수 있습니다.