https://pintia.cn/problem-sets/994805046380707840/exam/problems/994805145370476544?type=7&page=0
#include <bits/stdc++.h>
using namespace std;
int n;
char ch;
int main()
{
cin>>n;
cin>>ch;
int line=1;
n--; //此处n--是为了将中间的那个减去
//该for循环是为了求得n能够排几排
for(;n>=2*(2*(line+1)-1);line++)
//2*(line-1)-1为奇数1,3,5-----
//再次乘以2是因为是漏斗形状,注意此时是减去了中间的1个,所以取2开始
{
n-=2*(2*(line+1)-1); //求出剩下的个数
}
//该for循环输出前半的空格和符号
for(int i=line,j=0;i>0,j<line;i--,j++)
{
for(int k=1;k<=j;k++)
cout<<" ";
for(int k=1;k<=2*i-1;k++)
cout<<ch;
cout<<endl;
}
//该for循环输出下半部分,注意中间那个已经在上一个for循环输出
//所以从第二行开始
for(int i=2,j=line-1;i<=line,j>0;i++,j--)
{
for(int k=1;k<j;k++)
cout<<" ";
for(int k=1;k<=2*i-1;k++)
cout<<ch;
cout<<endl;
}
cout<<n<<endl;
return 0;
}