#include<iostream>
#include<algorithm>
#include <vector>
#include <iomanip>
using namespace std;
int main()
{
int shuru;
char zifu;
cin >> shuru >> zifu;
/*while (sum<=shuru)
{
sum +=1*r+ (2 * t-1)*2; //这里写的是之前写错的地方
t++;
r = 0;
}
t = t - 2;
sum=sum- (2 * t - 1) * 2;
int cha = sum-shuru;*/
int b = 0;
int i = 0;
int sum = -1;
for (i = 1;; i++)
{
sum = sum + 2 * (2 * i - 1);
if (shuru - sum < 0) break;
b = sum;
}
int cha = shuru - b;
int t = i - 1;
for (int i = t; i >= 1; i--)
{
for (int k = t - i; k > 0; k--)//这个地方卡了很久
{
cout << " ";
}
for (int j = 0; j < 2 * i - 1; j++)
{
cout << zifu;
}
cout << endl;
}
for (int z = 2; z <= t; z++)
{
for (int k = t - z; k > 0; k--)//这个地方卡了很久
{
cout << " ";
}
for (int j = 0; j < 2 * z - 1; j++)
{
cout << zifu;
}
cout << endl;
}
cout << cha;
}
当时纠结的点:1、怎么表示sum,即怎么表示字符的通项公式,sum+=2(2i-1),sum的初始值赋为-1,就可以解决问题,即第一次计算的 就是1 。。