- 1, 2, 3 ... 을 순서대로 계속 더해나갈 때,
그 합이 입력한 정수보다 작을 동안만 계속 더하는 프로그램을 작성해보자.
즉, 1부터 n까지 정수를 계속 더한다고 할 때,
어디까지 더해야 입력한 수보다 같거나 커지는지 알아보고자 하는 문제이다.하지만, 이번에는 그 때의 합을 출력해야 한다.
1080의 문제와 같은문제이나, 1080번에서는 더할때 입력한 수보다 커지는 수를 출력했다면,
이번에는 입력한 수보다 커지면 그때의 합을 출력한다.#include <stdio.h> int main() { long x,sum=0,i=0; scanf("%ld",&x); while(1) { sum+=i; if(sum>=x) { printf("%d",sum); break; } i++; } return 0; }
while(1) 무한루프에서 조건문으로 합이 입력값보다 커지면 출력하고 break로 빠져나오게하면 된다.
- 1부터 입력한 정수까지 1씩 증가시켜 출력하는 프로그램을 작성하되,
3의 배수인 경우는 출력하지 않도록 만들어보자.예를 들면,
1 2 4 5 7 8 10 11 13 14 ...
와 같이 출력하는 것이다.#include <stdio.h> int main() { int x,i=0,sum=0; scanf("%d",&x); for(i=0;i<=x;i++) { sum+=i; if(i%3!=0) printf("%d ",i); } return 0; }
역시 간단한 문제이다.
for 반복문에서 조건문으로 3의 배수가 아닐때만 출력하게 하면된다.
- 어떤 규칙에 따라 수를 순서대로 나열한 것을 수열(series)이라고 한다.
예를 들어
1 4 7 10 13 16 19 22 25 ... 은
1부터 시작해 이전에 만든 수에 3을 더해 다음 수를 만든 수열이다.
이러한 것을 수학에서는 앞뒤 수들의 차이가 같다고 하여등차(차이가 같다의 한문 말) 수열이라고 한다.
수열을 알게 된 영일이는 갑자기 궁금해졌다."그럼.... 123번째 나오는 수는 뭘까?"
영일이는 프로그램을 만들어 더 큰 수도 자동으로 계산하고 싶어졌다.
시작 값(a), 등차(d), 몇 번째인지를 나타내는 정수(n)가 입력될 때
n번째 수를 출력하는 프로그램을 만들어보자.수열은 정해진 규칙이 있기때문에 프로그램하기 정말 편하다.
#include <stdio.h> int main() { int a,b,n,i,result; scanf("%d %d %d",&a,&b,&n); for(i=0;i<n-1;i++) a+=b; printf("%d",a); return 0; }
- 시작 값(a), 등비(r), 몇 번째인지를 나타내는 정수(n)가 입력될 때
n번째 수를 출력하는 프로그램을 만들어보자.이번엔 등비수열이다. 역시 정말편하다.
#include <stdio.h> int main() { long a,r,n,i; scanf("%ld %ld %ld",&a,&r,&n); for(i=0;i<n-1;i++) a*=r; printf("%ld",a); return 0; }
- 1 -1 3 -5 11 -21 43 ... 은
1부터 시작해 이전에 만든 수에 -2를 곱한 다음 1을 더해 다음 수를 만든 수열이다.
시작 값(a), 곱할 값(m), 더할 값(d), 몇 번째인지를 나타내는 정수(n)가 입력될 때,
n번째 수를 출력하는 프로그램을 만들어보자.규칙이 약간 복잡해졌지만 역시 똑같다.
반복문을돌려서 조건만 입력해주면 된다.#include <stdio.h> int main() { long a,m,d,n,i; scanf("%ld %ld %ld %ld",&a,&m,&d,&n); for(i=0;i<n-1;i++) a=a*m+d; printf("%ld",a); return 0; }
개인적으로 오히려 1085,1086문제가 더어려운듯