1、计算需要打印的行数
2、打印上半部
3、打印下半部
#include <iostream>
using namespace std;
int main(){
int sum[200],num[200],s1=1,s2=0,count=0;
int N;
char c;
sum[count]=1;
num[count]=1;
cin>>N;
cin>>c;
while(sum[count]<=1000){
count++;
s1+=2;
sum[count]=sum[count-1]+(s1*2);
num[count]=s1;
}
while(!(N<sum[count+1]&&N>=sum[count])) count--;
int k=0;
for(int i=count;i>=0;i--,k++){
for(int j=0;j<k;j++){
cout<<' ';
}
for(int j=0;j<num[i];j++){
cout<<c;
}
cout<<endl;
}
k=k-2;
for(int i=1;i<=count;i++,k--){
for(int j=0;j<k;j++){
cout<<' ';
}
for(int j=0;j<num[i];j++){
cout<<c;
}
cout<<endl;
}
cout<<N-sum[count];
return 0;
}