1 条题解

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

    📝 题目大意

    给定一个正整数 NN,输出一个长度为 NN 的字符串。对于第 ii 个字符(1iN1 \leq i \leq N),若 ii33 的倍数则输出 x(失败),否则输出 o(成功)。

    💡 解题思路

    1. 题目分析NN 的范围仅为 1N1001 \leq N \leq 100,数据量极小,直接模拟即可。本质就是每隔两个 o 输出一个 x,形成 oox 的循环模式。

    2. 算法推导:从 i=1i = 1 遍历到 NN,对每个 ii 判断 imod3i \bmod 3 是否等于 00

      • imod3=0i \bmod 3 = 0,输出 x
      • 否则输出 o

      最后输出换行符结束。

    3. 边界与细节

      • 注意循环从 11 开始,而不是 00。若从 00 开始会导致 0mod3=00 \bmod 3 = 0 被误判为失败。
      • NN 可能不足 33,此时输出全为 o(如 N=1N=1 输出 oN=2N=2 输出 oo),逻辑依然正确。

    ⏱️ 复杂度分析

    • 时间复杂度O(N)O(N),遍历 11NN 一次。
    • 空间复杂度O(1)O(1),仅使用常数个变量。

    💻 标准代码 (C++)

    #include <iostream>
    using namespace std;
    int main() {
        int N;
        cin >> N;
        // 从第1次罚球开始,到第N次
        for (int i = 1; i <= N; i++) {
            if (i % 3 == 0) {
                // i是3的倍数:失败
                cout << 'x';
            } else {
                // 否则:成功
                cout << 'o';
            }
        }
        cout << endl;
        return 0;
    }
    
    • 1

    信息

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