1 条题解

  • 0
    @ 2025-8-24 21:16:23

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar 沉石鱼惊旋
    已完成今日我对着铁质的凳子踢了五下然后把那堆钢栏杆在地上滚了一下然后把椅子夹在了篮筐上大学习

    搬运于2025-08-24 21:16:22,当前版本为作者最后更新于2024-06-06 12:47:57,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    这个 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
    10323
    时间
    1000ms
    内存
    512MiB
    难度
    4
    标签
    递交数
    0
    已通过
    0
    上传者