#include <iostream>
using namespace std;
int func(int x) { //计算x层的沙漏需要多少个符号,返回符号的个数
int sum = 0;
while (x >= 3) {
sum += x;
x -= 2;
}
return sum * 2 + 1;
}
int main() {
int n;
char c;
cin >> n >> c;
if (n < 7 ) {
if (n > 0)
cout << n << endl;
else
return 0;
return 0;
}
int layer = 3;
while (n >= func(layer)) {
layer += 2;
}
layer -= 2;
for (int i = 0; i <= layer / 2; i++) {
for(int j = 0; j < i; j++) {
cout << " ";
}
for (int j = layer - i * 2; j > 0; j--) {
cout << c;
}
cout << endl;
}
for (int i = layer / 2 - 1; i >= 0; i--) {
for (int j = 0; j < i; j++) {
cout << " ";
}
for (int j = layer - i * 2; j > 0; j--) {
cout << c;
}
cout << endl;
}
if (n - func(layer) != 0) {
cout << n - func(layer) << endl;
}
return 0;
}
当时没有想到为什么错误,留待以后再考虑。