注意:字符个数没有剩余时要输出0 否则测试点1会过不去…
#include<iostream>
#include<cmath>
using namespace std;
int main(){
int n;char a;
cin>>n>>a;
int x=sqrt((n+1)/2); //x是上一半打印行数 x-1是下一半打印行数
int yushu=n+1-x*x*2; //余下字符个数
int count=0;
for(int i=2*x-1;i>=1;i=i-2){//第一行有(2*x-1)个
for(int j=0;j<count;j++){//打印空格
printf(" ");
}
for(int j=0;j<i;j++){ //打印字符
cout<<a;
}
printf("\n");
count++;
}
for(int i=3;i<=2*x-1;i=i+2){
for(int j=0;j<count-1-1;j++){ //count多加了一个 减掉 开始打印下一半再减一个
printf(" ");
}
for(int j=0;j<i;j++){
cout<<a;
}
printf("\n");
count--;
}
// if(yushu!=0)
printf("%d",yushu);
return 0;
}