【GESP】C++二级练习 luogu-P5721 【深基4.例6】数字直角三角形
GESP二级练习,多层循环分支练习,难度★☆☆☆☆。
luogu-P5721 【深基4.例6】数字直角三角形
题目要求
题目描述
给出 $n$,请输出一个直角边长度是 $n$ 的数字直角三角形。所有数字都是 $2$ 位组成的,如果没有 $2$ 位则加上前导 $0$。
输入格式
输入一个正整数 $n$。
输出格式
输出如题目要求的数字直角三角形。
输入 #1
1
5
输出 #1
1
2
3
4
5
0102030405
06070809
101112
1314
15
说明/提示
数据保证,$1\le n\le13$。
题目分析
解题思路
- 首先,我们需要理解题目的核心要求:
- 输入一个正整数 n,表示直角三角形的行数
- 输出一个数字直角三角形
- 所有数字都需要是两位数,不足两位补零
- 数字从01开始递增
- 解题思路:
- 基本方法:
- 使用双重循环实现三角形的打印
- 外层循环控制行数,从n递减到1
- 内层循环控制每行打印的数字个数
- 实现步骤:
- 获取输入的正整数 n
- 使用变量count记录当前要打印的数字,从1开始
- 外层循环从n到1递减,控制行数
- 内层循环从1到i,控制每行打印的数字个数
- 使用printf格式化输出两位数
- 优化考虑:
- 使用printf的%02d格式控制,自动补零
- 使用endl确保每行结束换行
- 时间复杂度:
- O(n²),其中n为输入的行数
- 特殊情况:
- 由题目限制条件可知,1 ≤ n ≤ 13,不需要考虑过大数值的情况
- 基本方法:
示例代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <bits/stdc++.h>
using namespace std;
int main() {
// 声明变量n用于存储输入的行数
int n;
// 从标准输入读取n的值
cin >> n;
// count用于记录当前要打印的数字
int count = 1;
// 外层循环控制行数,从n行递减到1行
for (int i = n; i >= 1; i--) {
// 内层循环控制每行打印的数字个数
for (int j = 1; j <= i; j++) {
// 使用printf格式化输出两位数,不足两位补零
printf("%02d", count);
// 数字递增
count++;
}
// 每行结束后换行
cout << endl;
}
return 0;
}
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
GESP各级别考纲要点、知识拓展和练习题目清单详见C++学习项目主页
“luogu-”系列题目已加入洛谷Java、C++初学团队,作业清单,可在线评测,团队名额有限,欢迎加入。
“bcqm-”系列题目可在编程启蒙题库进行在线评测。
本文由作者按照 CC BY 4.0 进行授权