首页 > 其他分享 >L1-002 打印沙漏

L1-002 打印沙漏

时间:2023-02-18 22:44:25浏览次数:56  
标签:沙漏 int 倒三角 002 层数 L1

#include<iostream>
using namespace std;
int n,k=1,rest;//k是倒三角的层数
char ch;
void fun(int space,int c){
    while (space--)
    {
        cout<<" ";
    }
    while (c--)
    {
        cout<<ch;
        if (!c)
        {
            cout<<endl;
        }
        
    }
    
}
int space=0,c=0;
int main()
{
    cin>>n>>ch;
    //思路:先算给定的n可以盖几层,由层数推得顶层字符数,依次打印即可
    //总数:n
    //实际上用掉的个数:num
    //就倒三角来看,层数k和沙漏字符总数有一定的关系
    //所以不妨枚举倒三角层数并顺手算出这个情况下的沙漏所需字符数,由此推得给定的n个字符中有多少是实际用上的
    //
    //对于倒三角而言,第k层的字符数为2*k-1(从下往上数,也就是从倒三角的顶点处开始往上数)
    //由数列公式,倒三角(2*k-1+1)*k>>1=k*k,沙漏2*k*k-1
    while (2*k*k-1<=n)//计算倒三角的层数
    {
        k++;
    }
    --k;
    rest=n-2*k*k+1;

    //如何打印?
    c=2*k-1;
    for (size_t i = 0; i < k; i++)
    {
        fun(space,c);
        space++;
        c-=2;
    }
    space-=2;
    c+=4;
    for (size_t i = 0; i < k-1; i++)
    {
        fun(space,c);
        space--;
        c+=2;
    }
    cout<<rest;

    return 0;
}

 题目链接:题目详情 - L1-002 打印沙漏 (pintia.cn)

标签:沙漏,int,倒三角,002,层数,L1
From: https://www.cnblogs.com/shinnyblue/p/17133866.html

相关文章

  • PAT 甲级 1002 A+B for Polynomials(25)
    Thistime,youaresupposedtofindA+BwhereAandBaretwopolynomials.InputSpecification:Eachinputfilecontainsonetestcase.Eachcaseoccupies2li......
  • 废话文学002
    今天从b站看了一个视频,感觉讲的还不错。题目是:《改变人生命运》从小到大听了太多的大道理了,但是仍然过不好我们这一生。说实话我从首页上看到这个的时候不过是抱着看看......
  • PAT-basic-1002 写出这个数 java
    一、题目读入一个正整数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。输......
  • 002.初始话Ioc容器——基于构造方法实例化对象(Bean)
    1.三种XML实例化Bean的配置方式  1.基于构造方法实例化对象  2.基于静态工厂实例化对象  3.基于工厂实例方法实例化对象2.详细讲解  2.1  基于构造方......
  • ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib
    在Kylin服务器上安装好mysql后登录时出现以下问题:查找mysql.sock文件,命令如下:find-namemysql.sock结果如下: 如果文件不存在,mysql.sock丢失,mysqld_safe启动报错......
  • 002-相等风险加权以及阿尔法驱动型加权
    相等风险加权相等风险加权方法根据头寸的波动性(或风险的其他度量指标,如下降幅度)来反向调整头寸规模。波动性越大(小)的头寸,分配的权重就越小(大)。相等风险加权的方式,是根据......
  • L1-023 输出GPLT (20 分)
    L1-023 输出GPLT (20分)给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按GPLTGPLT....这样的顺序输出,并忽略其它字符。当然,四种字符(不区......
  • PTA 练习 L1-011 A-B (20 分)
    L1-011 A-B (20分)本题要求你计算A−B。不过麻烦的是,A和B都是字符串——即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A−B。输入格式:输入......
  • 002GitLab集成Jenkins构建pipeline流水线任务
    CI持续集成(ContinuousIntegration),CD持续部署(ContinuousDeployment)Jenkins是一个优秀的持续集成和持续部署平台,有丰富的插件支持,可以满足各种个性化build场景。GitLab可......
  • 002:C++类和对象
    1:****范围解析运算符::  类的内部声明函数是内敛函数(inline),  类的外边定义函数,需要在方法名字前面使用类名和范围解析运算费::  调用函数使用.   ......