https://www.luogu.com.cn/problem/P5721
题目描述
给出n(1\le n\le13)n(1≤n≤13),请输出一个直角边长度是 n 的数字直角三角形。所有数字都是 2 位组成的,如果没有 2 位则加上前导 0。
很明显这是一道水题,但看起来又似乎觉得挺有趣的,所以想在这里写下自己当时的想法。
根据题目和输出样例(在这里没有摆出)可以理解到,输出的是一个等腰直角三角形,而且它的直角是在左上方。看到这个跟9*9乘法表非常相似的图形,首先就想到了for循环。但是又突然懵了一下,如何让输出值一直增大并且小于10的数字补0?
想了一下后,发现不能像9*9乘法表一样用index来输出,于是便想到了增加一个cnt = 1,让cnt一直递增;
下面上代码
#include <iostream>
using namespace std;
int main() {
int n;
int cnt = 1;
cin >> n;
for (int i = n; i > 0; i--) { //由于直角在左上方,所以应该要让第一行先输出n个数字
for (int j = 1; j <= i; j++) { //i = n的开始,让j = 0时可以递增输出到n个数字
if (cnt < 10) cout << 0 << cnt;
else cout << cnt;
cnt++; //此处的cnt++让输出数字呈递增状态
}
cout << endl;
}
return 0;
}