欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PTA新手刷题系列--打印沙漏

程序员文章站 2022-03-13 23:45:28
...

PTA新手刷题系列--打印沙漏

符号个数 最外层符号
1 1
7 3
17 5
31 7
49 9
Created with Raphaël 2.1.2开始n<7?输出一个符号,剩余n-1个sum=1,i=1sum+=(2*i+1)*2sum>n?i--,然后此时2*i+1就是最外层的符号个数 结束i++yesnoyesno
#include<iostream>
using namespace std;
int main()
{
    int n,i;
    char symbol;
    cin>>n>>symbol;
    i=1;
    if(n<7){
        cout<<symbol<<endl;
        cout<<n-1;
    }else{
        int sum=1;
        while((sum+=(2*i+1)*2)<=n){
            i++;
        }
        int left=n-(sum-(2*i+1)*2);
        i--;

        for(int j=2*i+1;j>0;j-=2){
            int blanks=(2*i+1-j)/2;
            while(blanks--){
                cout<<" ";
            }
            for(int w=j;w>0;w--){
                cout<<symbol;
            }
            cout<<endl;
        }
        for(int j=3;j<=2*i+1;j+=2){
            int blanks=(2*i+1-j)/2;
            while(blanks--){
                cout<<" ";
            }
                for(int w=j;w>0;w--){
                cout<<symbol;
            }
            cout<<endl;
        }
        cout<<left;
    }
    return 0;
}
相关标签: 刷题