TB椰程 TypeBuddy 打字搭子

求三角形

洛谷·深入浅出 · 代码 · cpp · 难度 3/5 · 共 809 字

输出 n×n 实心正方形与实心直角三角形,中间空行

  • 洛谷
  • 练习

正文

// 原题:https://oj.yecheng.tv/p/1390
// 题意:先输出 n×n 的数字正方形(每个数 2 位、紧挨),空一行,再输出同宽右对齐的数字三角形。
// 思路:正方形顺序填 1..n^2;三角形每行 k 个数、右对齐到宽度 n*2,填 n(n+1)/2 个继续计数的数。
// 复杂度:O(n^2)。
// 易错点:数字 2 位前导 0;正方形与三角形之间有一空行;三角形右对齐而非左对齐。
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
    int n;
    cin >> n;
    int cur = 1;
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            cout << setw(2) << setfill('0') << cur;
            cur++;
        }
        cout << endl;
    }
    cout << endl;
    int t = 1;
    for(int i = 1; i <= n; i++){
        int lead = 2 * n - 2 * i;
        for(int s = 0; s < lead; s++) cout << ' ';
        for(int j = 0; j < i; j++){
            cout << setw(2) << setfill('0') << t;
            t++;
        }
        cout << endl;
    }
    return 0;
}

洛谷·深入浅出的其它内容

打字首页 · 词库画廊 · 编程打字 · 指法入门 · 天梯榜 · 数据分析 · 班级课堂 · 关于我们
椰程 TypeBuddy 打字搭子 —— 键盘指法练习 · 单词记忆 · 班级课堂 · 在线 PK