1027. 打印沙漏
题目中的星号和markdown编辑器冲突了,请点上边链接去源地址ba!
解题思路
计算每一行的符号数和空格数,可得这是一个等差数列求和的数学知识,要下课了,以后补上详细的吧
代码
#include <cstdio>
#include <cmath>
int main() {
int n;
char ch[10];
scanf("%d%s", &n, ch);
int x = sqrt((n + 1) / 2);
for (int i = x; i >= 1; --i) {
for(int j=0;j<x-i;j++)printf(" ");
for (int j = 0; j < i * 2 - 1;j++)printf("%s", ch);
printf("\n");
}
for (int i = 2; i <= x; ++i) {
for(int j=0;j<x-i;j++)printf(" ");
for (int j = 0; j < i * 2 - 1;j++)printf("%s", ch);
printf("\n");
}
printf("%d",n-((x*x)*2-1));
return 0;
}