已知长度为n的序列A,求出了前缀序列B,根据前缀序列B推出原序列A,并输出。
作者:互联网
前缀序列B的定义:B[i]为所有下标小于等于i中的元素中,所有奇数位置的和减去所有偶数位置的和。A序列和B序列的下标均从1开始。
输入描述
输入第一行仅包含一个正整数n,表示序列的长度。(1<=n<=10000)
输入第二行包含n个整数,空格隔开,表示一个前缀序列,所有的整数的绝对值都小于等于10^9。
输出描述
输出仅包含一行,包含n个整数,表示原序列,中间用空格隔开。
样例输入
4
1 -1 2 -2
样例输出
1 2 3 4
#include<iostream>
using namespace std;
int main() {
int num = 0; //序列的长度
cin >> num;
while (num <= 0) {
cin >> num;
}
// cout << "num: " << num << endl;
int A[num + 1]; //原始序列
int B[num + 1]; //前缀
A[0] = 0;
B[0] = 0;
int index = 1; //数组下标从1开始
while (index <= num) {
scanf("%d", &B[index++]);
}
/*for (index = 1; index <= num; ++index) {
cout << B[index] << endl;
}*/
for (int i = 1; i <= num; ++i) {
index = i;
if (index % 2) { //下标为奇数
A[i] = B[index];
} else { //下标为偶数
A[i] = -B[index];
}
while (index > 0) {
A[i] += A[index - 1];
A[i] -= A[index -2];
index -= 2;
}
}
for (int i = 1; i < num + 1; ++i) {
cout << A[i] << " ";
}
cout << endl;
return 0;
}
标签:index,前缀,int,num,输入,序列,求出 来源: https://blog.csdn.net/sinat_41079349/article/details/120237424