solution.cpp 1.7 KB
Newer Older
每日一练社区's avatar
每日一练社区 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
#include <bits/stdc++.h>
using namespace std;
string str;
stringstream ss;
int main()
{
    int n;
    cin >> n;
    int x = 2 * n - 1;
    for (int i = 1; i <= 1500; i++)
    { //先产生1到1500的字符串
        string str1;
        ss << i;
        ss >> str1;
        str += str1;
        ss.clear();
    }
    int length = 4 * n - 4; //等腰三角形周长
    for (int i = 1; i <= n; i++)
    { //一共n行
        if (i != n && i != 1)
        { //除了这两行其余每行都只有两个数
            for (int j = 1; j <= n + i - 1; j++)
            {
                if (j == n - i + 1)
                { //每一行左边的那个数
                    cout << str[i - 1];
                }
                else if (j == 2 * n - (n - i + 1))
                {                                             //左右下标之和为2*n
                    cout << str[4 * n - 4 - (i - 1)] << endl; //每一行右边的数 ,每一行左边和右边的数应该输出的序号之和为4*n-4
                }
                else
                {
                    cout << '.';
                }
            }
        }
        else if (i == 1)
        {
            for (int x = 1; x <= n; x++)
            { //处理最后一行,最后一行有2*n-1个字符
                if (x == n)
                {
                    cout << '1' << endl;
                }
                else
                {
                    cout << '.';
                }
            }
        }
        else
        {
            for (int m = 1; m <= 2 * n - 1; m++)
            { //处理最后一行,最后一行有2*n-1个字符,从str[n-1]到str[3*n-1]
                cout << str[n + (m - 2)];
            }
        }
    }
    return 0;
}