Xi_kor 2020. 7. 12. 19:58

문제

민건이는 수학 수업시간동안 재밌는 방법으로 수학을 연습하고 있다.

먼저 민건이는 정수 수열 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 <= Bi <= 10^9)

 

출력

첫째 줄에 수열 A를 이루는 N개의 정수를 출력해라 (1 <= Ai <= 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

 

------------------------------------------------------------------------------------------------------------------------------

 

수학적으로 구해지지 않은 A 수열의 값을 x라고 했을 때, x의 값은 '(현재 B수열의 값)*B수열의 순서(1번째, 2번째..순으로 할때)-현재까지 구해진 A수열 전체의 합'의 형태로 나왔다. 따라서 위와 같은 방식으로 구해보았다.

#include <iostream>
using namespace std;

int main() {
	int n;
	long long int a[105];
	long long int b[105];
	cin >> n;
	for (int i = 0; i < n; i++) {
		cin >> b[i];
	}
	long long int sum = 0;
	for (int i = 0; i < n; i++) {
		if (i == 0) {
			a[i] = b[i];
			sum = b[i];
		}
		else {
			a[i] = b[i] * (i + 1) - sum;
			sum += a[i];
		}
	}
	for (int i = 0; i < n; i++) {
		cout << a[i] << " ";
	}
	return 0;
}