본문 바로가기

알고리즘

[Algorithm] PROSJEK

문제


민건이는 수학 수업시간동안 재밌는 방법으로 수학을 연습하고 있다. 먼저 그는 정수 수열 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