B-1027 打印沙漏 (20分)
#include <iostream>
using namespace std;
int main(){
int n,c,h,i=3,j,k,f,w,sum=0,s;
char m;
cin >> n >> m;
if(n<7){//如果数量小于7,不能形成上下三角
cout<<m<<endl;
cout<<n-1;
return 0;
}//以下对三角形的处理均不包括中间一点
w=(n-1)/2;//求出一半三角形可用的顶点数
for(i=3;sum<w;i+=2){//求出一半三角形最大所需的顶点数
sum+=i;
}
sum=sum-i+2;
h=i-4;
c=(i-1)/2;
s=n-(sum*2+1);
for(k=1;k<c;k++){//上三角
for(j=1;j<k;j++){//输出空格
cout << ' ';
}
for(f=0;f<h;f++){//输出字符
cout << m;
}
h-=2;
cout<<endl;
}
h=3;
for(k=c-1;k>1;k--){//下三角同理
for(j=k-2;j>0;j--){
cout << ' ';
}
for(f=0;f<h;f++){
cout << m;
}
h+=2;
cout<<endl;
}
cout << s;
return 0;
}