1 条题解

  • 0
    @ 2026-5-5 23:10:13

    1342B1342B - 二进制周期

    我们来看看周期 k=1k=1k=2k=2 的字符串长什么样。
    周期等于 11 的字符串有两种类型:00000000\ldots11111111\ldots
    周期等于 22 的字符串也有两种类型:0101001010\ldots1010110101\ldots

    容易看出,如果 tt 只由 00(或只由 11)组成,那么字符串 tt 本身就是一个答案,因为它的周期等于 11
    否则,也很显然,任何字符串 tt 都是长度为 2t2|t|0101010101\ldots01(或 1010101010\ldots10)的子序列。

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        int T;
        cin >> T;
        while (T--) {
            string t;
            cin >> t;
            bool has0 = false, has1 = false;
            for (char c : t) {
                if (c == '0') has0 = true;
                else has1 = true;
            }
            if (!has0 || !has1) {
                // 只有一种字符,直接输出 t 即可(周期为 1)
                cout << t << '\n';
            } else {
                // 同时有 0 和 1,构造 "01" 重复 len(t) 次,周期为 2
                int len = t.size();
                for (int i = 0; i < len; ++i) {
                    cout << "01";
                }
                cout << '\n';
            }
        }
        return 0;
    }
    
    • 1

    信息

    ID
    6977
    时间
    1000ms
    内存
    256MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者