티스토리 뷰
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항 까지의 등비 수열의 합을 구하는 공식은 아래와 같습니다.
때로는 이러한 공식이 프로그래머의 고민을 가볍게 해줍니다.
'프로그래밍' 카테고리의 다른 글
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 |
댓글
최근에 올라온 글
최근에 달린 댓글
- 런타임 에러 76은 경로를 찾을수 없다는 메시지 이군요. 입력하신 경로를⋯
- Set folder = fso.GetFolder(sFolder) 에서 런⋯
- [승인대기]
- 표준 시간은 제주 올레 홈페이지를 참조하시는 것이 좋을듯 하네요. 이 포⋯
- 안녕하세요. 리뷰 감사해요 소요시간이 어떻게 되나요? 저도 가보려고요
- 제주 올레길 / 까미노 데 산티아고 길 을 가봤는데 아직 해파랑 남파⋯
- 아 오르세... 제 가 갔을땐 실내 촬영이 안됬는데 지금은 된다고 하지요⋯
- 법환 포구 빌라 자리엔 원래 각종 맛집들이 있엇는데 말이죠.. 싹 밀어서⋯
- 리눅스의 쉘 환경과 같은 준비를 해주는 것으로 이해하면 좋을듯 합니다. ⋯
- 안녕하세요.. 야라바님 초면에 갑작스럽겠지만 제 생명의 은인입니다. T⋯