#1053:【循环嵌套】数字走向3时间限制: 1000 ms 内存限制: 65536 KB 提交数: 75 通过数: 43 【题目描述】输入一个正整数n(2<=n<20) 【输入样例】5 【输出样例】 1 6 11 16 21
2 7 12 17 22
3 8 13 18 23
4 9 14 19 24
5 10 15 20 25 |
本网站属公益、非盈利性质,仅适当接受少量赞助以支持网站的运行维护。
蜀ICP备2024068936号-2 联系我们: 248801752@qq.com 23967609@qq.com
要解决这个问题,我们需要生成一个n×n的矩阵,其中数字按照特定的顺序填充。具体来说,每一列的数字从上到下依次递增,且每列的首数字比前一列的首数字大n。例如,当n=5时,第一列的数字是1, 2, 3, 4, 5;第二列的数字是6, 7, 8, 9, 10;依此类推。
### 方法思路
1. **分析问题**:矩阵中的数字填充规律是,第i行第j列的数字为`i + (j-1)*n`。例如,第1行第1列的数字是1,第1行第2列的数字是1 + (2-1)*5 = 6,依此类推。
2. **循环嵌套**:使用外层循环控制行数,内层循环控制列数。对于每个单元格,计算其对应的数字并按照场宽为3的格式输出。
3. **格式化输出**:使用Python的字符串格式化功能确保每个数字占据3个字符宽度,右对齐。
### 解决代码
```python
n = int(input())
for i in range(1, n + 1):
for j in range(1, n + 1):
num = i + (j - 1) * n
print(f"{num:3d}", end='')
print()
```
### 代码解释
1. **输入处理**:读取整数n,表示矩阵的行数和列数。
2. **外层循环**:`for i in range(1, n + 1)`控制行数,从1到n。
3. **内层循环**:`for j in range(1, n + 1)`控制列数,从1到n。
4. **数字计算**:计算当前单元格的数字`num = i + (j - 1) * n`。
5. **格式化输出**:使用f-string`f"{num:3d}"`确保每个数字占据3个字符宽度,右对齐。
6. **换行处理**:每行结束后调用`print()`换行。
通过这种方法,我们可以生成并正确格式化所需的数字矩阵。