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 <= 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;
}