关键是找出能输出多少列,以及注意空格只要输出前面那一部分
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int x,sum,remant,len,pre=0;
char c;
//freopen("1027.txt","r",stdin);
cin>>x>>c;
for(int i=1,sum=1;;i++)
if(sum>x)
{
remant=x-pre;
len=i-1;
break;
}
else
{
pre=sum;
sum+=(2*i+1)*2;
}
for(int k=0;k<len;k++)
{
for(int i=0;i<k;i++)
cout<<" ";
for(int i=0;i<((len-k)*2-1);i++)
cout<<c;
cout<<endl;
}
for(int k=1;k<len;k++)
{
for(int i=0;i<(len-k-1);i++)
cout<<" ";
for(int i=0;i<(k+1)*2-1;i++)
cout<<c;
cout<<endl;
}
cout<<remant;
return 0;
}