这题有个小问题,真是nt东西,它给出打印17个字符时正好是全用上了并且没有输出剩下的字符的数量,因此我还以为正好对应沙漏形状的num不用最终输出剩余数(也就是0),但是没想到,我最后试了试,还真得输出,caole,思路依旧非常平稳、简单、直白
代码如下:
#include <iostream>
using namespace std;
int main()
{
int num,rest,rrest;
int r=1;int now_num=1;
int now_half=1;
cin>>num;
int i=2;
char c;
cin>>c;
if(num>=7)
{
for( ;;i++)
{
now_half=now_half+2*i-1;
now_num=now_half*2-1;
rest=num-now_num;
if(rest>=0)
rrest=rest;
else
if(now_num>num)
{
i=i-1;
break;
}
if(now_num==num)
{
break;
}
}
r=i;
while(r)
{
int sub=i-r;
while(sub)
{
printf(" ");