C 1027 打印沙漏 (20 分)
原题
https://pintia.cn/problem-sets/994805260223102976/problems/994805294251491328
代码
#include
#include
using namespace std;
vector vec;
int main()
{
int total, i=1, sum = 0;
char c;
cin >> total >> c;
//获得实际打印的个数
if (total > 0)
{ vec.push_back(i); //中间的字符数
i = 3, sum = 1;
while ((sum + i * 2) <= total)
{
sum += i * 2;
vec.push_back(i);
i += 2;
}
}
//按vec数组里的个数打印
for (int j = vec.size()-1; j >= 0; j--)
{
for(int i = 0; i < (vec[vec.size()-1]-vec[j])/2; i++)printf(" ");
for (int i = 0; i < vec[j]; i++) printf("%c",c);
printf("\n");
}
for (int j = 1; j < vec.size(); j++)
{
for(int i = 0; i < (vec[vec.size()-1]-vec[j])/2; i++)printf(" ");
for (int i = 0; i < vec[j]; i++) printf("%c",c);
printf("\n");
}
cout << total - sum;
return 0;
}