1 条题解

  • 0
    @ 2026-6-19 10:30:48

    📝 题目大意

    给定正整数 NN,输出一个由 NN0N+1N+11 组成、且 01 交替排列的字符串。要求以 1 开头。

    💡 解题思路

    1. 题目分析NN 的范围很小(1N1001 \leq N \leq 100),可以直接构造。字符串总长度为 2N+12N+1,以 1 开头,交替排列,因此奇数位(第 1, 3, 5, ... 位)为 1,偶数位为 0

    2. 算法推导

      • 总长度 len = 2 * N + 1
      • 遍历 i0len - 1
        • i 为偶数(i % 2 == 0),输出 1
        • i 为奇数,输出 0
      • 这样恰好产生 N+1N+11(偶数索引有 N+1N+1 个)和 NN0(奇数索引有 NN 个)。
    3. 边界与细节

      • N=1N=1 时输出 101,正确。
      • 输出末尾换行。
      • 无需考虑复杂情况,直接按位输出即可。

    ⏱️ 复杂度分析

    • 时间复杂度O(N)O(N),需要输出 2N+12N+1 个字符。
    • 空间复杂度O(1)O(1),仅使用常数级额外空间。

    💻 标准代码 (C++)

    #include <iostream>
    using namespace std;
    
    int main() {
        int N;
        cin >> N;
    
        // 总长度 = N个0 + (N+1)个1 = 2N+1
        // 以1开头,交替排列:偶数位输出'1',奇数位输出'0'
        for (int i = 0; i < 2 * N + 1; i++) {
            if (i % 2 == 0) {
                cout << '1';   // 第0,2,4,...位 → 1
            } else {
                cout << '0';   // 第1,3,5,...位 → 0
            }
        }
        cout << endl;
    
        return 0;
    }
    
    • 1

    信息

    ID
    774
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    1
    已通过
    1
    上传者