L1-002 打印沙漏 分数 20
重点找递推公式,推导层数
// 8'39"
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n;
cin >> n;
char c;
cin >> c;
int cur = 1;
for(int i = 0; i <= n; ++ i)
if(2 * (i * i) - 1 > n)
{
cur = i - 1;
break;
}
for(int i = cur; i >= 1; -- i)
{
for(int j = 1; j <= cur - i; ++ j)
cout << " ";
for(int j = 1; j <= 2 * i - 1; ++ j)
cout << c;
cout << endl;
}
for(int i = 2; i <= cur; ++ i)
{
for(int j = 1; j <= cur - i; ++ j)
cout << " ";
for(int j = 1; j <= 2 * i - 1; ++ j)
cout << c;
cout << endl;
}
cout << n - 2 * cur * cur + 1;
return 0;
}
浙公网安备 33010602011771号