高精度加法以及减法: 使用vector来写:

#include <bits/stdc++.h>
using namespace std;
int flag = 1;
string to_string(__int128 x) {
    string ans = "";
    if (x < 0) {
        x = -x;
        putchar('-');
    }
    if (x == 0) {
        return "0";
    }
    for (; x; x /= 10) {
        ans = (char)(x % 10 + '0') + ans;
    }
    return ans;
}

istream& operator >> (istream &cin, __int128 &x) {
    string str;
    cin >> str;
    x = 0;
    for (auto v : str) {
        x = (x * 10) + (v - '0');
    }
    return cin;
}

ostream& operator << (ostream& cout, const __int128 &x) {
    cout << to_string(x);
    return cout;
}

istream& operator >> (istream &cin, vector<int> &v) {
    string str;
    cin >> str;
    v.resize(str.size());
    for (int i = str.size() - 1, j = 0; i >= 0; i--, j++) {
        v[j] = (str[i] - '0');
    }
    return cin;
}

string to_string(const vector<int> &x) {
    string ans = "";
    for (int i = x.size() - 1; i >= 0; i--) {
        ans += char(x[i] + '0');
    }
    return ans;
}

ostream& operator << (ostream& cout, const vector<int> &v) {
    cout << to_string(v);
    return cout;
}

vector<int> operator + (const vector<int> &a, const vector<int> &b) {
    vector<int> ans(max(a.size(), b.size()) + 1);
    for (int i = 0; i < ans.size() - 1; i++) {
        ans[i] = (i < a.size() ? a[i] : 0) + (i < b.size() ? b[i] : 0);
    }
    for (int i = 0; i < ans.size() - 1; i++) {
        ans[i + 1] += ans[i] / 10;
        ans[i] %= 10;
    }
    while (ans.size() != 0 && ans.back() == 0) {
        ans.pop_back();
    }
    return ans;
}

vector<int> operator - (const vector<int> &a, const vector<int> &b) {
    vector<int> ans(a.size());
    for (int i = 0; i < a.size(); i++) {
        ans[i] = a[i] - (i < b.size() ? b[i] : 0);
    }
    for (int i = 0; i < ans.size(); i++) {
        while (ans[i] < 0) {
            ans[i + 1]--;
            ans[i] += 10;
        }
    }
    while (ans.size() != 0 && ans.back() == 0) ans.pop_back();
    return ans;
}

vector<int> operator += (vector<int> &a, const vector<int> &b) {
    a.resize(max(a.size(), b.size()) + 1);
    for (int i = 0; i < a.size() - 1; i++) {
        a[i] += i < b.size() ? b[i] : 0;
    }
    for (int i = 0; i < a.size() - 1; i++) {
        a[i + 1] += a[i] / 10;
        a[i] %= 10;
    }
    while (a.size() && a.back() == 0) {
        a.pop_back();
    }
    return a;
}

bool operator == (const vector<int> &a, const vector<int> &b) {
    int flag1 = 0, flag2 = 0;
    if (a.size() == b.size()) {
        flag1 = 1;
    }
    if (!flag1) {
        return false;
    }
    for (int i = 0; i < a.size(); i++) {
        if (a[i] == b[i]) {
            continue;
        }
        else {
            return false;
        }
    }
    return true;
}

bool operator < (const vector<int> &a, const vector<int> &b) {
    if (a.size() == b.size()) {
        for (int i = a.size() - 1; i >= 0; i--) {
            if (a[i] == b[i]) {
                continue;
            }
            return a[i] < b[i];
        }
    }
    return a.size() < b.size();
}

int main()
{
    int n;
    cin >> n;
    vector<int> g[1001];
    for (int i = 1; i <= n; i++) {
        cin >> g[i];
    }
    vector<int> ans1, ans2, ans;
    for (int i = 1; i <= n; i++) {
        if (i % 2 == 1) ans1 = ans1 + g[i];
        if (i % 2 == 0) ans2 = ans2 + g[i];
    }
    if (ans1 == ans2) {
        cout << 0 << '\n';
    }
    if (ans1 < ans2) {
        putchar('-');
        swap(ans1, ans2);
    }
    ans = ans1 - ans2;
    cout << ans << '\n';
    return 0;
}