P5721 【深基4.例6】数字直角三角形
此题两层循环很好解决,在《深基》书中提示可以用一层循环解决,就试了一下。
由题意可知数字是从1到n(n+1)/2,即:
行数 | 数字数 |
---|
第1行 | n |
第2行 | n-1 |
…… | …… |
第n-1行 | 2 |
第n行 | 1 |
数字的个数是等差数列的和,首项为1,末项为n,公差为1。 | |
数字正好从1开始,所以最后一个数字正好等于数字个数,即n(n+1)/2。 | |
思路就是用一层循环输出1到n(n+1)/2,并在“合适的地方换行”。
可以知道,行数是从n逐渐减小到1的,因此可以通过循环嵌套选择的形式解决。
代码如下:
#include<cstdio>
using namespace std;
int main()
{
int cnt=0, n;
scanf("%d", &n);
int j=1, tmp=n;
for(int i=1; i<=n*(n+1)/2; i++)
{
printf("%02d", ++cnt);
if(j==tmp)
{
printf("\n");
j=0;
tmp--;
}
j++;
}
return 0;
}
仅供参考