PAT L1-002. 打印沙漏
原题链接
简单
作者:
YMYS
,
2024-04-17 16:59:10
,
所有人可见
,
阅读 12
看见这题我就来气,怎么这么折磨人!
#include<iostream>
#include<cmath>
using namespace std;
int hs(int n)
{
int all = 0;
int num = 0;
for (int i = 1; i <= n; i += 2)
{
all += i;
if (2 * all - 1 > n) {
num = i-2;
return num;
}
}
}
int main()
{
int n;
char c;
cin >> n >> c;
int num = hs(n);
int step = 0;
for (int i = 1; i <= num; i++)
{
int a = max(i, num + 1 - i);
int b = min(i, num + 1 - i);
for (int j = 1; j <= num; j++)
{
if (j >= b && j <= a) {
cout << c;
step++;
}
else if(j<b)cout << ' ';
}
cout << '\n';
}
cout << n - step << '\n';
return 0;
}