1 条题解

  • 2
    @ 2024-12-18 23:26:07

    如果 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;
    }
    
    • 1

    信息

    ID
    117
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    67
    已通过
    3
    上传者