等腰三角形-第九届蓝桥省赛-C组

本题目要求你输出一个由数字组成的等腰三角形。

具体的步骤是:

先用 1,2,3,… 的自然数拼一个足够长的串。 用这个串填充三角形的三条边。从上方顶点开始,逆时针填充。 比如,当三角形高度是 8 时:

输入格式:

一个正整数 n,表示三角形的高度。 3<n<300

输出格式:

输出,用数字填充的等腰三角形。

为了便于测评,我们要求空格一律用 . 代替。

具体,可参照样例。

输入样例:

在这里给出一组输入。例如:

5

输出样例:

在这里给出相应的输出。例如:

....1
...2.1
..3...2
.4.....1
567891011

AC代码:

#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
string s;
void shuzi(){   //先将1~1500的数存入字符串
    for(int i=1;i<=1500;i++)
    {
        string s1="";
        int a=i;
        while(a)
        {
            s1+=(a%10+'0');
            a/=10;
        }
        for(int k=s1.length()-1;k>=0;k--)
        {
            s+=s1[k];
        }
    }
}
int main()
{
    shuzi();
    int n;cin>>n;
    int res=1;
    int t=1;
    for(int i=0;i<n-1;i++){
			for(int j=1;j<=n-i-1;j++){  //输出每一行第一个数前的符号
				cout<<".";
			}
			cout<<s[i];
			if(i!=0){
				for(int j=1;j<=2*i-1;j++){  //输出第一个数后面的符号的个数
					cout<<".";
				}
				cout<<s[4*(n-1)-i]; //通过逆时针循环找规律
			}
			cout<<endl;
		}
		for(int i=0;i<=2*(n-1);i++){    //输出最后一行,从n开始
			cout<<s[n+i-1];
		}
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_52797843/article/details/122659656