考虑差分,使得 bi=aiai1b_i = a_i - a_{i - 1}b1=a1anb_1 = a_1 - a_n

但此时 i=1nbi=0\displaystyle \sum _{i = 1} ^n b_i = 0 导致丢失了一部分信息,于是我们再给 b1b_1 减去 a1a_1,此时 b1=anb_1 = -a_n

有了 aia_ibi=aiai1b_i = a_i - a_{i - 1},我们就可以递推得到 ai1=aibia_{i - 1} = a_i - b_i,至此问题得到解决。

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin >> n;
    cout << 1 << ' ' << 1 << endl;
    for (int i = 1; i <= n; i++)
        cout << i << ' ';
    cout << n + 1 << endl;
    for (int i = 1; i <= n - 1; i++)
        cout << i + 1 << ' ';
    cout << 1 << ' ' << n + 1 << endl;
    return 0;
}

/* ATTENTION!!! THIS IS THE BARRIER!!! */

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 12;
long long a[N], b[N];
int main()
{
    int n, X0 = 1, Y0 = 1;
    cin >> n;
    for (int i = 1; i <= n; i++)
        cin >> b[i];
    a[n] = -b[1];
    for (int i = n - 1; i >= 1; i--)
        a[i] = a[i + 1] - b[i + 1];
    for (int i = 1; i <= n - 1; i++)
        cout << a[i] << ' ';
    cout << a[n] << endl;
    return 0;
}