1 条题解

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

    📝 题目大意

    给定整数 A,B,DA, B, D,输出首项为 AA、末项为 BB、公差为 DD 的等差数列的所有项,用空格分隔。

    💡 解题思路

    1. 题目分析:数据范围极小(A,B,D100A, B, D \leq 100),且题目保证输入一定构成合法的等差数列(即 BAB - ADD 的整数倍)。只需按顺序输出即可。
    2. 算法推导:从 x=Ax = A 开始,每次增加 DD,当 x>Bx > B 时停止。用一个 for 循环即可实现。输出时需要在每两个数之间输出一个空格,但最后一个数之后不加空格——可以通过判断 x + D <= B 来决定是否输出空格。
    3. 边界与细节
      • A=BA = B 时,数列只有一项,直接输出 AA 即可,不需要空格。
      • 注意空格的控制:不要在末尾输出多余空格,否则可能导致评测格式错误。

    ⏱️ 复杂度分析

    • 时间复杂度O(BAD+1)O(\frac{B-A}{D} + 1),即输出项数,最坏 O(100)O(100)
    • 空间复杂度O(1)O(1),仅使用常数个变量。

    💻 标准代码 (C++)

    #include <iostream>
    using namespace std;
    
    int main() {
        int A, B, D;
        cin >> A >> B >> D;          // 读入首项、末项、公差
    
        for (int x = A; x <= B; x += D) {  // 从 A 开始,每次加 D,直到超过 B
            cout << x;                     // 输出当前项
            if (x + D <= B) {              // 如果下一项仍在范围内,输出空格分隔
                cout << " ";
            }
        }
        cout << endl;                      // 输出换行
    
        return 0;
    }
    
    • 1

    信息

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