1 条题解

  • 0
    @ 2025-6-28 16:55:22

    A. 不要三个一

    显然要尽可能把 11 往高位放,如果放了两个 11 就来一个 00 来避免非法,所以 11 应该放在从左往右第 1,2,4,5,7,8,1,2,4,5,7,8,\dots 个,这些除以 331,21,2 的位置中。所以可以根据是否还有 11 来决定怎么输出。

    • 子任务 1:只有一个 11,那直接输出 1111n1n-100 即可。
    • 子任务 2:显然这个子任务的输出是 11,11011,11011011,11,11011,11011011,\dots 这样的格式。
    • 子任务 3:凑数给愿意写 66if 打表的同学送的分数。

    满分参考代码

    #include <bits/stdc++.h>
    using namespace std;
    int n, m;
    int main()
    {
        freopen("three.in", "r", stdin);
        freopen("three.out", "w", stdout);
        cin >> n >> m;
        for (int i = 1; i <= n; i++)
        {
            if (m > 0)
            {
                if (i % 3 == 1 || i % 3 == 2)
                {
                    cout << 1;
                    m--;
                }
                else
                    cout << 0;
            }
            else
                cout << 0;
        }
        return 0;
    }
    
    • 1

    信息

    ID
    1596
    时间
    1000ms
    内存
    512MiB
    难度
    6
    标签
    递交数
    25
    已通过
    11
    上传者