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

本文详细介绍了如何解决PTA平台上的新手题目——打印沙漏。通过实例解析和代码展示,帮助读者理解沙漏图案的生成逻辑,涵盖递归与循环等编程基础概念。
摘要由CSDN通过智能技术生成

题目描述

符号个数最外层符号
11
73
175
317
499
Created with Raphaël 2.1.2 开始 n<7? 输出一个符号,剩余n-1个 sum=1,i=1 sum+=(2*i+1)*2 sum>n? i--,然后此时2*i+1就是最外层的符号个数 结束 i++ yes no yes no
#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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值