P5721 【深基4.例6】数字直角三角形

【深基4.例6】数字直角三角形

题目描述

给出 n n n,请输出一个直角边长度是 n n n 的数字直角三角形。所有数字都是 2 2 2 位组成的,如果没有 2 2 2 位则加上前导 0 0 0

输入格式

输入一个正整数 n n n

输出格式

输出如题目要求的数字直角三角形。

1.题目分析

该题可以通过双重循环直接打印行和列,直接输出结果。也可以通过寻找数学规律解决。

2.题目思路

寻找数学规律,当输入n时,三角形的数字个数应该为:((n+1)*(n+1) - (n+1))/2,
即可以确定数字个数,对个位数判断补零打印,其他直接打印结果,
再对换行进行判断,条件为当i == 循环完一行之后n的递减之和时,执行换行,其他情况直接跳出循环。

3.代码实现

#include 

int main() {
    int n;
    scanf("%d", &n);
    int count = n;
    int sum = n;
    //数学规律,循环次数为:((n+1)*(n+1) - (n+1))/2 即 数字个数
    for (int i = 1; i <= ((n + 1) * (n + 1) - (n + 1)) / 2; ++i) {
        //个数数补零,其他直接输出
        if (i > 0 && i < 10) {
            printf("0%d", i);
        } else {
            printf("%d", i);
        }
        //换行判断
        while (count > 1) {
            if (i == sum) {
                printf("\n");
                count--;
                sum += count;
            } else {
                break;
            }
        }
    }
}

你可能感兴趣的:(刷题go,go,go,算法)