题目描述
时间在一分一秒流逝,来让我们打印个简单的沙漏吧!
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
记住把没用完的符号数量记录下来。
输入
输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。
输出
首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。
样例输入
19 *
样例输出
*****
***
*
***
*****
2
代码内容
#include <iostream>
using namespace std;
int main()
{
int i, n, sum = 0, m, sheng, j, r;
char c;
cin >> n >> c;
for (i = 1; sum <= n; i++)//计算共打印几行,还剩但是字符
{
if (i == 1)
sum = 1;
else
sum += 2 * (2 * i - 1);
j = i;
}
sum -= 2 * (2 * j - 1);
sheng =n-sum;
j = j - 1; //共j行
m = j;
for (i = 0; i < j-1; i++)//打印前j-1行
{
for(r=0;r<i;r++)//打印空格
cout << " ";
for(r=0;r<(2*m-1);r++)//打印字符
cout << c;
m--;
cout << endl;
}
m = j;
for (i = 1; i <= m; i++)//打印后j行
{
for(r=0;r<(j-i);r++)
cout << " ";
for(r=0;r<(2*i-1);r++)
cout << c;
cout << endl;
}
cout << sheng << endl;
return 0;
}