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

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

GESP二级练习,多层循环分支练习,难度★☆☆☆☆。

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

题目要求

题目描述

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

输入格式

输入一个正整数 nn

输出格式

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

输入 #1

5

输出 #1

0102030405
06070809
101112
1314
15

说明/提示

数据保证,1n131\le n\le13


题目分析

解题思路

  1. 首先,我们需要理解题目的核心要求:

    • 输入一个正整数 n,表示直角三角形的行数
    • 输出一个数字直角三角形
    • 所有数字都需要是两位数,不足两位补零
    • 数字从01开始递增
  2. 解题思路:

    • 基本方法:
      • 使用双重循环实现三角形的打印
      • 外层循环控制行数,从n递减到1
      • 内层循环控制每行打印的数字个数
    • 实现步骤:
      • 获取输入的正整数 n
      • 使用变量count记录当前要打印的数字,从1开始
      • 外层循环从n到1递减,控制行数
      • 内层循环从1到i,控制每行打印的数字个数
      • 使用printf格式化输出两位数
    • 优化考虑:
      • 使用printf的%02d格式控制,自动补零
      • 使用endl确保每行结束换行
    • 时间复杂度:
      • O(n²),其中n为输入的行数
    • 特殊情况:
      • 由题目限制条件可知,1 ≤ n ≤ 13,不需要考虑过大数值的情况

{% include custom/custom-post-content-inner.html %}


示例代码

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

{% include custom/custom-post-content-footer.md %}

所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

luogu-”系列题目可在 洛谷题库 在线评测。

bcqm-”系列题目可在 编程启蒙题库 在线评测。

GESP/CSP 认证学习微信公众号
GESP/CSP 认证学习微信公众号
Last updated on