문제
민건이는 수학 수업시간동안 재밌는 방법으로 수학을 연습하고 있다. 먼저 그는 정수 수열 A를 작성했다. 그리고 나서 그 아래에 A의 해당 항까지의 평균값을 그 항으로 하는 정수 수열 B를 쓴다.
예를 들어 , 만약 수열 A가 1,3,2,6,8 이라면 수열 B는 1/1, (1+3)/2 , (1+3+2)/3, (1+3+2+6) /4, (1+3+2+6+8) /5 즉, 1,2,2,3,4 가 된다.
수열 B가 주어졌을 때 수열 A를 구하는 프로그램을 작성하시오.
입력
첫째줄에 수열 B의 길이를 나타내는 N이 주어진다.(1<= N <=100)
두번째 줄에 수열 B를 구성사는 N개의 요소가 주어진다. Bi (1 <= B i <=10^9)
출력
첫째 줄에 수열 A를 이루는 N개의 정수를 출력해라 (1 <= A i <=10^9) note : 수열 A의 요소들은 정수이다.
예제 입력
1
2
예제 출력
2
예제 입력
4
3 2 3 5
예제 출력
3 1 5 11
예제 입력
5
1 2 2 3 4
예제 출력
1 3 2 6 8
출처
COCI 2014/2015 Contest #1 1번
<코드>
#include <stdio.h>
int n;
int b[101];
int a[101];
// 재귀 호출을 사용하여 반복문 사용을 줄일 수 있었다.
int mksum(int n){
a[1] = b[1];
if(n==1) return a[1];
return mksum(n-1)+a[n];
}
int main() {
//Please Enter Your Code Here
scanf("%d",&n);
for(int i=1; i<=n; i++){
scanf("%d",&b[i]);
}
a[1] = b[1];
for(int i=2; i<=n; i++){
a[i] = b[i] * i - mksum(i-1);
}
for(int i=1; i<=n; i++){
printf("%d ",a[i]);
}
return 0;
}
'알고리즘' 카테고리의 다른 글
[Algorithm] sequencenum (0) | 2019.01.29 |
---|---|
[Algorithm] 런타임 에러가 발생하는 이유 (0) | 2019.01.28 |
[Algorithm] 재귀함수 (0) | 2019.01.28 |
[Algorithm] beehive (0) | 2019.01.28 |
[Algorithm] 좌석 문제 (0) | 2019.01.27 |