感谢 对本题的加强建议。

如果 A 程序可以向 B 程序传递一个不大于 23112^{31}-1 的非负整数,那么这就是一个 Hash 模板题。弱化后的题目随便用什么 Hash 函数都能过,比如「所有 1\texttt{1} 的位置编号之和 mod 12345678\text{mod } 12345678」。

然而,这道题目只允许 A 程序向 B 程序传递一个不大于 22012^{20}-1 的非负整数,因此我们要优化 Hash 函数——把 Hash 函数改为「所有 1\texttt{1} 的位置编号之异或和」就可以通过此题了。

#include <bits/stdc++.h>
using namespace std;
int main()
{
    string S;
    cin >> S;
    int X = 0;
    int n = S.size();
    S = ' ' + S;
    for (int i = 1; i <= n; i++)
        if (S[i] == '1') X ^= i;
    cout << X << endl;
    return 0;
}

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

#include <bits/stdc++.h>
using namespace std;
int main()
{
    string T;
    int X;
    cin >> T >> X;
    int D = 0;
    int n = T.size();
    T = ' ' + T;
    for (int i = 1; i <= n; i++)
        if (T[i] == '1') X ^= i;
    D = X;
    cout << D << endl;
    return 0;
}