题解
数字矩形
1 条题解
-
0
解题思路
要输出一个 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。
写两层循环:
- 外层循环控制行数 i(一共 n 行);
- 内层循环控制列数 j(每行 m 个数),输出 j % 10;
- 数字之间用空格隔开,每行结束换行。
参考代码
// 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