티스토리 뷰



26. 다음 프로그램의 출력은 무엇인가?

    int t, i;
    t = 0;
    for (i = 1; i <= 10; i++) {
        t += i;
    }
    printf("%d\n", t);
① 45 ② 50 ③ 52 ④ 53 ⑤ 55

이번 문제는 문제 자체로만 보면 1부터 10까지 더하는 것이므로 C 프로그램을 읽을 수 있는 수준이라면 난이도 최하의 보너스 문제라 할 수 있겠습니다. 그런데 문제에 변형이 가해지거나 값이 커지면 더하기 하느라 시간을 낭비하는 것은 실수의 우려도 있지만 시간 낭비일 가능성이 높습니다. 이런 경우 등차수열의 합을 구하는 공식을 활용하면 매우 편리할 수 있습니다.

위의 문제는 { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}의 등차 수열로 첫항 a의 값은 1이고 각 항간의 간격인 공차 d 또한 1입니다. 항의 개수 n은 10입니다.(올림피아드 기출문제로 배우는 C언어 - for 루프 등차 수열의 일반항 구하기 및 항의 개수 구하기 참조) 이런 가능하에서 등차 수열의 합을 구하는 공식은 아래와 같습니다.


문제를 위의 공식에 대입해 보면 a=1, n=10, d=1로 풀어보면 다음과 같습니다.


이를 1부터의 홀수의 합은 a와 d를 결정할 수 있으므로 다음과 같이 새로운 공식으로 풀어 낼수 있고


2부터의 짝수의 합도 다음과 같이 새로운 공식을 추출할 수 있습니다.


참고로 각 항간에 동일한 비율로 구성되는 수열을 등비수열이라 하고 첫항을 a, 공비를 r이라 할 때 첫항부터 n항 까지의 등비 수열의 합을 구하는 공식은 아래와 같습니다.

때로는 이러한 공식이 프로그래머의 고민을 가볍게 해줍니다.



댓글
댓글쓰기 폼
«   2023/02   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28
글 보관함