先计算余数,把1先计入图形总数中,每次每行都增加2,由于是上下两行,加入总数时再乘以2,如果,总数大于n的时候,记下最多一行符号的个数及余数,跳出。
输出图案按照上下两部分输出即可。
#include <iostream>
using namespace std;
int main()
{
int n;
char a;
cin >> n >> a;
int count = 1, k = 1;
int max;
int y;
while(1) {
k += 2;
if(count + 2 * k > n) {
max = k - 2;
y = n - count;
break;
}
count += 2 * k;
}
for(int i = max; i > 1; i = i - 2) {
for(int j = 0; j < max; j++) {
if(j < (max - i) / 2) {
cout << " ";
} else if(j >= (max + i) / 2) {
break;
} else {
cout << a;
}
}
cout << endl;
}
for(int i = 1; i <= max; i = i + 2) {
for(int j = 0; j < max; j++) {
if(j < (max - i) / 2) {
cout << " ";
} else if(j >= (max + i) / 2) {
break;
} else {
cout << a;
}
}
cout << endl;
}
cout << y;
return 0;
}