top1编程
← 返回题目
题解

数字矩形

1 条题解

  • 0
    @ 2026-8-5 1:22:40

    解题思路

    要输出一个 n 行 m 列的数字矩形,每一行的数字都相同,从 0 开始数:0 1 2 3 4 ... 9,到 9 之后又从 0 开始。

    比如样例 n=3、m=4,每一行都是 0 1 2 3。

    第几列应该输出哪个数字呢?可以这样想:

    • 第 0 列是 0,第 1 列是 1,第 2 列是 2,第 3 列是 3……第 9 列是 9,第 10 列又回到 0。

    这正是“取余数”的规律:第 j 列输出 j % 10。

    写两层循环:

    1. 外层循环控制行数 i(一共 n 行);
    2. 内层循环控制列数 j(每行 m 个数),输出 j % 10;
    3. 数字之间用空格隔开,每行结束换行。

    参考代码

    // P4432 数字矩形:输出 n 行 m 列的数字,每行都是 0 1 2 ... 9 0 1 ... 循环
    #include <iostream>
    using namespace std;
    
    int main() {
        int n, m; // n 行 m 列
        cin >> n >> m;
    
        for (int i = 0; i < n; i++) {          // 一共 n 行
            for (int j = 0; j < m; j++) {      // 每行 m 个数
                if (j > 0) cout << " ";        // 数字之间用空格分开
                cout << j % 10;                // 取余:0~9 循环,超过 9 重新从 0 开始
            }
            cout << endl;                      // 一行结束换行
        }
        return 0;
    }
    

    复杂度分析

    • 一共输出 n 行、每行 m 个数字,时间复杂度是 O(n × m)。
    • 只用了一小把变量,空间复杂度是 O(1)。
    • 1