티스토리 뷰
728x90
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항 까지의 등비 수열의 합을 구하는 공식은 아래와 같습니다.
때로는 이러한 공식이 프로그래머의 고민을 가볍게 해줍니다.
728x90
'프로그래밍' 카테고리의 다른 글
PHP로 오픈 플래시 차트 출력하기 (6) | 2016.04.06 |
---|---|
올림피아드 기출문제로 배우는 C언어 - 함수 (0) | 2016.04.04 |
올림피아드 기출문제로 배우는 C언어 - while문과 수열 (0) | 2016.04.01 |
올림피아드 기출문제로 배우는 C언어 - C 문자열 (0) | 2016.03.30 |
VB 닷넷 서비스 만들기 (1) | 2016.03.29 |
댓글