-
[알고리즘/C언어] 수열의 합 알고리즘(5) / Sum = (1 * 10) + (2 * 9) + (3 * 8) + ... + (10 * 1) (정보처리기사, 실기)Algorithm 2019. 5. 24. 20:59
1. Sum = (1 * 10) + (2 * 9) + (3 * 8) + ... + (10 * 1)
#include <stdio.h> #define NUM 10 int main() { int sum = 0, cnt, m, i = 0, j = NUM + 1; for (cnt = 1; cnt <= NUM; cnt++) { i = i + 1; j = j - 1; m = i * j; sum = sum + m; printf("cnt=%2d, i=%2d, j=%2d, m=%4d, sum=%5d\n", cnt, i, j, m, sum); } printf("----------반복문 종료-------------\n"); printf("cnt=%2d, i=%2d, j=%2d, m=%4d, sum=%5d\n", cnt, i, j, m, sum); system("pause"); return 0; }
만약 1항부터 10항까지 위의 형태로 곱한 값을 더해야한다면
1부터 10까지 증가하는 수를 담을 변수 i가 있어야할 것이고
10부터 1까지 감소하는 수를 담을 변수 j가 필요할 것이다.
i는 초기값이 0이고 반복을 할 때마다 1씩 증가시킨다.
j는 초기값이 11이고 반복을 할 때마다 1씩 감소시킨다.
i와 j를 곱한 값은 변수 m에 할당하고
변수 sum에 m을 누적해서 더해준다.
#include <stdio.h> #define NUM 10 int main() { int sum = 0, cnt, m, i = 0, j = NUM + 1; for (cnt = 1; cnt <= NUM; cnt++) { i = i + 1; j = (NUM + 1) - i; m = i * j; sum = sum + m; printf("cnt=%2d, i=%2d, j=%2d, m=%4d, sum=%5d\n", cnt, i, j, m, sum); } printf("----------반복문 종료-------------\n"); printf("cnt=%2d, i=%2d, j=%2d, m=%4d, sum=%5d\n", cnt, i, j, m, sum); system("pause"); return 0; }
또 다른 방식의 풀이이다.
j의 값은 11에서 1씩 증가하는 i의 값을 뺀 값이므로
j = (NUM + 1) - i; 연산을 해주는 방식이다.
반응형'Algorithm' 카테고리의 다른 글
[알고리즘/C언어] 도형 알고리즘 / 직각삼각형 채우기 (정보처리기사, 실기) (0) 2019.05.25 [알고리즘/C언어] 도형 알고리즘 / 사각형 ㄹ자 채우기 (정보처리기사, 실기) (0) 2019.05.24 [알고리즘/C언어] 수열의 합 알고리즘(4) / 합과 차 반복 (정보처리기사, 실기) (0) 2019.05.24 [알고리즘/C언어] 구구단 출력을 goto문으로 해보자 (정보처리기사, 실기) (0) 2019.05.23 [알고리즘/C언어] 수열의 합 알고리즘(3) / 계차수열의 합 (정보처리기사, 실기) (0) 2019.05.20 COMMENT