P5721【深基4.例6】数字直角三角形(C++一层循环实现)
查看原帖
P5721【深基4.例6】数字直角三角形(C++一层循环实现)
212816
liusnoi楼主2020/11/27 16:31

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;
}

仅供参考

2020/11/27 16:31
加载中...