1 条题解

  • 1
    @ 2024-6-6 18:52:23

    这个 50005000 的限制就很烦,否则我们可以构造一个 11 然后拼在一起。

    但是这启发我们,答案一定是用什么东西拼起来的。正常的什么二进制不行,因为本题没有乘法操作,只能加法凑。

    但是我们根据已有的 JavaScript 语法经验或者单纯对于给出的字符组合,发现 +[] 返回一个 Number,[]+[] 返回一个 String。执行 +([]+[]) 对一个空字符串求值又得到了一个 00。也就是说,我们把 nn 的每一位用 String 表示出来拼接在一起,然后转成 Number 类型即可。一个 +!![] 就是 11,每一位最多拼接 99 次。长度显然不会超过 50005000

    Fun Fact:有一个为本题而生的网站 https://jsfuck.com/。也许下面的信息可以对于做这题给出一些启发。

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

    信息

    ID
    959
    时间
    1000ms
    内存
    256MiB
    难度
    4
    标签
    递交数
    11
    已通过
    10
    上传者