1027 打印沙漏
程序员文章站
2022-06-07 18:53:09
...
#include<bits/stdc++.h>
using namespace std;
int main(void)
{
int n;
string sym;
cin>>n>>sym;
int i;
for(i=1;i<=30;i++)
{
if(2*i*i-1>n)//第i个沙漏需要的符号数是2*i*i-1;
break;
}
i--;//i是最大能构成第几个沙漏
int nBlank;//每行的前驱空格数
for(int j=2*i-1;j>=1;j-=2)//输出上半部分
{
nBlank=(2*i-1-j)/2;
for(int k=1;k<=nBlank;k++)
{
cout<<" ";
}
for(int k=1;k<=j;k++)
{
cout<<sym;
}
cout<<endl;
}
for(int j=3;j<=2*i-1;j+=2)//输出下半部分,不包含中间一行
{
nBlank=(2*i-1-j)/2;
for(int k=1;k<=nBlank;k++)
{
cout<<" ";
}
for(int k=1;k<=j;k++)
{
cout<<sym;
}
cout<<endl;
}
cout<<n-(2*i*i-1)<<endl;
return 0;
}
上一篇: 打印沙漏----【题解】
下一篇: Android的viewBing初接触