模拟题老是模拟不出来
#include <iostream>
using namespace std;
int main() {
int n;
char c;
cin >> n >> c;
int m, i, sum;
if (n == 1)
cout << c << endl << 0 << endl;
else if (n > 1 || n <= 1000) {
m = 1, sum = 1;
for (i = 3; sum <= n; i += 2) {
sum += 2 * i; //sum-2*(i-2)为沙漏的最大总符号数
m += 2; //m-2为沙漏的层数
} //i-4为行中最大符号数
int s = i - 4;
int num = m - 2;
for (int j = 1; j <= (num + 1) / 2; j++) {
for (int k = 0; k < j - 1; k++)
cout << " ";
for (int f = 0; f < s; f++)
cout << c; //输出符号
s -= 2; //逐层递减2(符号数)
cout << endl;
} //打印上半部分沙漏
s += 4;
for (int j = (num + 1) / 2; j < num; j++) {
for (int k = 0; k < num - j - 1; k++)
cout << " ";
for (int f = 0; f < s; f++)
cout << c;
s += 2;
cout << endl;
} //打印下半部分沙漏
cout << n - sum + 2 * (i - 2) << endl; //输出剩余符号数
} else
return 0;
return 0;
}