PTA:L1-002 打印沙漏

2023-09-22 07:18:35

L1-002 打印沙漏

分数 20

本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印

*****
 ***
  *
 ***
*****

所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。

给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。

输入格式:

输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。

输出格式:

首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。

输入样例:

19 *

输出样例:

*****
 ***
  *
 ***
*****
2

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

本题的解题思路:根据输入的N,找到最上面一行所需要打印的个数,然后根据格式打印即可。

具体代码如下:C++实现

#include <iostream>

using namespace std;
void L1_002_print_hourglass()
{
    int num;
    char str;
    cin>> num >> str;

    int cnt = 1;
    int temp =1;
    int res = 0;

    while(temp <= num)
    {
        res = num-temp;  //记录剩余个数
        temp += 2 * (2*cnt + 1); 
        cnt++;
    }
    cnt = cnt - 1; //记录打印的行数
    for(int i = 0;i<cnt;i++)
    {
        int c = 2*(cnt-i-1) + 1;
        for(int j = 0;j<i;j++)
        {
            cout << " ";
        }
        for(int k = 0;k<c;k++)
        {
            cout << str;
        }
        cout << endl;
    }
    for(int i = 1;i<cnt;i++)
    {
        int c = 2*i +1;
        for(int j = 0;j<cnt-i-1;j++)
        {
            cout << " ";
        }
        for(int j = 0;j<c;j++)
        {
            cout << str;
        }
        cout <<endl;
    }
    cout << res;

}



int main()
{
    L1_002_print_hourglass();
    return 0;
}

Python代码实现:

a = input()
num =(a.split(" ")[0])
char1 = a.split(" ")[-1]
num1 = int(num)

cnt = 1
temp = 1
res = 0

while(temp <= num1):
   res = num1 - temp
   temp = temp + 2*(2*cnt + 1)
   cnt = cnt + 1

cnt = cnt -1

for i in range(cnt):
    c = 2*(cnt-i) -1
    for j in range(i):
        print(" ",end="")
    while(c):
        print(char1,end="")
        c = c - 1
    print("\n",end="")

for i in range(1,cnt):
    c = 2*i+1

    for j in range(cnt-1-i):
        print(" ",end="")

    while (c):
        print(char1, end="")
        c = c - 1
    print("\n",end="")

print(res)

有什么问题,欢迎私聊我!!!

更多推荐

vue Router路由

编程式导航|VueRouter看官方文档vueRouter是Vue.js的官方路由。它与Vue.js核心深度集成,让用Vue.js构建单页应用变得轻而易举。功能包括:嵌套路由映射动态路由选择模块化、基于组件的路由配置路由参数、查询、通配符展示由Vue.js的过渡系统提供的过渡效果细致的导航控制自动激活CSS类的链接HT

如何使用ChatGPT构建一个Web应用程序?

围绕ChatGPT的最大卖点之一是它可以成为一种有效的编程工具。其想法是这样的:你用自然语言描述需求,该聊天机器人生成满足该需求的代码。但是ChatGPT在这方面到底有多好呢?还有什么比亲自测试一下更好的方法呢?我们让ChatGPT从头开始构建一个简单的Web应用程序。以下是我们测试的结果,以及你可以使用ChatGPT

Vue与relation-graph:高效打造关系图的秘诀

产品提需求啦,有一个需求就是实现一个功能:展现各个文件之间的调用关系,通过关系图的形式进行展示出来。之前考虑使用antvx6实现此功能,但是考虑到只是展示的功能,也不需要进行交互,所以放弃使用antvx6,选择了更加简单的relation-graph插件。先来看一个示例项目:<template><div><divsty

【数据结构】二叉树的·深度优先遍历(前中后序遍历)and·广度优先(层序遍历)

💐🌸🌷🍀🌹🌻🌺🍁🍃🍂🌿🍄🍝🍛🍤📃个人主页:阿然成长日记👈点击可跳转📆个人专栏:🔹数据结构与算法🔹C语言进阶🚩不能则学,不知则问,耻于问人,决无长进🍭🍯🍎🍏🍊🍋🍒🍇🍉🍓🍑🍈🍌🍐🍍文章目录一、二叉树的深度优先遍历🌺1.前序遍历(1)`先序遍历`的过程

已解决 IDEA Maven 项目中 “Could not find artifact“ 问题的常见情况和解决方案

🌷🍁博主libin9iOak带您GotoNewWorld.✨🍁🦄个人主页——libin9iOak的博客🎐🐳《面试题大全》文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺🌊《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐🪁🍁希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!

如何工作和生活相平衡?

之前待过一家外企,他们的口号是Balancingworkandlife,工作和生活相平衡。辗转几家公司之后,发现这个越来越难了,越来越少的时间投入家庭和自己的生活。人生的意义(AI)人生的意义是一个深奥而复杂的哲学问题,不同的文化、宗教和哲学传统都提供了不同的解释。对于每个人来说,人生的意义也是因人而异的,因为它基于个

企业架构LNMP学习笔记60

Tomcat企业常见使用方法;1)简单代码测试:将两个jsp文件上传到ROOT目录下。查看下这个jsp代码:test.jsp<html><head><title>HelloWorld</title><%@pagelanguage="java"contentType="text/html;charset=UTF-8"pa

半年总结 -要有松弛感的慢生活

匆匆的半年就这样又过去了,菊次郎的夏天也过完了,国庆又要到了,正在发愁国庆节七天要干什么,然后前几天了解省考要提前到1月份,得,这下不就有事情要做了么😏进入正题吧~工作自从去年年末换到新公司,到现在渐渐的适应了这里的工作和同事,尤其是前几个月,感觉像是突破了自己,做了几个自认为比较有挑战性的工作,有些技术,任务之前听

智能配电系统:保障电力运行安全、可控与高效

智能配电系统是一种先进的电力分配技术,它通过智能化、数字化和网络化等方式,有效地保障了电力运行的安全、可控和高效。力安科技智能配电系统是在配电室(含高压柜、变压器、低压柜)、箱式变电站、配电箱及动力柜(箱)、智能终端箱实现智能化、网络化、数字化的基础上,通过移动互联网接入电易云,建设用户智能配电系统服务云管理平台。借助

Mozilla 紧急修补 Firefox 和 Thunderbird 中的 WebP 严重零日漏洞

Mozilla周二发布了安全更新,修复了Firefox和Thunderbird中的一个关键零日漏洞。该漏洞被标记为CVE-2023-4863,是WebP图像格式中的堆缓冲区溢出漏洞,在处理特制图像时可能导致任意代码执行。Mozilla在一份公告中说,打开恶意WebP图像可能导致内容进程中的堆缓冲区溢出,这个漏洞在其他产

AR导览软件定制开发方案

随着智能手机的普及和人们对文化、旅游等方面的需求不断增加,导览软件市场前景广阔。本文将围绕导览软件定制开发方案展开,包括以下部分:一、行业现状及市场需求导览软件市场发展迅速,各类导览软件层出不穷。通过对市场竞争对手的分析,我们发现目前导览软件主要分为两类:1)传统导览软件:以导游解说和景区导览为主,功能相对简单;2)智

热文推荐