【天梯赛—不想坑队友系列】L1-002 打印沙漏(java)

news2024/10/4 9:25:11

题目链接 PTA | 程序设计类实验辅助教学平台

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

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

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

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

输入格式:

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

输出格式:

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

输入样例:

19 *

输出样例:

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

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

题目分析

  • 等差数列求和公式,把单个三角形的行号当成n,得 Sn = n*n

 

  • 计算单个三角形最多有多少行(注意:这里由于是把俩个三角形分开了所以在算俩个三角形合起来的时候需要的符号数是要减1的)
    int rows = 0;
    for (int i = 1; i * i <= n; i++) {//求单个三角多少行 2*rows*rows -1 >= n
        if (i * i == (n + 1) / 2) {
            rows = i;
            break;
        } else if (i * i > (n + 1) / 2) {
            rows = i - 1;
            break;
        }
    }
  •  求出单个三角形行数后输出三角形即可

题目代码

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sca = new Scanner(System.in);
        int n = sca.nextInt();
        String s = sca.next();
        char c = s.charAt(0);

        int rows = 0;
        for (int i = 1; i * i <= n ; i++) {
            if (i * i ==  (n + 1)/2) {
                rows = i;
                break;
            }
            else if (i * i >  (n + 1)/2){
                rows = i-1;
                break;
            }
        }
        int shengyu_row = n - 2 * rows * rows + 1;
        int banks = 0;
        int nums1 = 1 + 2 * (rows - 1);
        while (nums1 > 0) {
            for (int i = 0; i < banks; i++) {
                System.out.print(" ");
            }
            for (int i = 0; i < nums1; i++) {
                System.out.print(c);
            }
            System.out.println();
            nums1 = nums1 - 2;
            banks++;
        }
        banks -= 2;
        int nums2 = 3;
        while (nums2 <= 1 + 2 * (rows - 1)) {
            for (int i = 0; i < banks; i++) {
                System.out.print(" ");
            }
            for (int i = 0; i < nums2; i++) {
                System.out.print(c);
            }
            System.out.println();
            nums2 += 2;
            banks--;
        }
        System.out.println(shengyu_row);

    }
}

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/421891.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

c/c++:2进制、8进制、10进制、16进制和进制之间的转换,c语言输出匹配格式%

c/c&#xff1a;2进制、8进制、10进制、16进制和进制之间的转换&#xff0c;c语言输出匹配格式% 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;此时学会c的话&#xff0c; 我所知道的周边的会c的同学&#xff0c;可手握10…

Linux主机用WordPress搭建网站

文章目录一、搭建过程1.1、切换到超户1.2、更新1.3、安装一些包1.4、安装wordpress1.5、配置MariaDB1.6、创建WordPress数据库1.7、配置WordPress1.8、登录WordPress1.9、安装phpMyAdmin一、搭建过程 1.1、切换到超户 sudo su1.2、更新 apt-get update -y1.3、安装一些包 a…

我在windows10下,使用CMake gui 编译krita源码

系列文章目录 文章目录系列文章目录前言一、krita编译说明二、使用步骤前言 我在windows10下&#xff0c;使用CMake gui 编译krita源码 where is the source code:E:/krita-dev/krita where to build the binaries:E:/krita-dev/krita_camke current generator:MinGW Makefile…

成为程序员后才知道的6件事,第5点看完很心酸!

曾几时&#xff0c;总觉得IT精英外表光鲜亮丽&#xff0c;尤其是程序员咔咔咔打代码&#xff0c;月入几个w&#xff0c;不光挣得多&#xff0c;上班期间还能玩电脑游戏。但是&#xff0c;真正当了程序员之后&#xff0c;OMG!我再也不这样想了&#xff01;好多事都是当了程序员才…

【C语言深入】带你了解C语言中的可变参数列表

【C语言深入】带你了解C语言中的可变参数列表一、可变参数函数的使用方式1、使用方式2、自定义可变把参数函数2.1、三个宏一个类型2.2、实现方式二、可变参数列表的原理1、va_start1.1、_ADDRESSOF1.2、关于临时拷贝的一个小知识点1.3、_INTSIZEOF2、va_arg3、va_end一、可变参…

23种设计模式总结(大白话,适合小白)

文章目录什么是设计模式&#xff1f;设计模式的分类创建型模式创建型类类型工厂方法模式创建型对象型抽象工厂模式生成器模式原型模式单例模式结构型模式结构型类类型适配器模式结构型对象型桥接模式组合模式装饰器模式外观模式享元模式代理模式行为型模式行为型对象型命令模式…

【C++PrimerPlus】第五章 循环和关系表达式

文章目录5.1 for循环5.1.1 for循环的组成部分5.1.2 回到for循环5.1.3 修改步长5.1.4 使用for循环访问字符串5.1.5 递增运算符 ()和递减运算符(--)5.1.6 副作用和顺序点5.1.7 前缀格式与后缀格式5.1.8 递增/递减和指针5.1.9 组合赋值运算符5.1.10 复合语句![](https://img-blog.…

Qt Quick - ToolTip

Qt Quick - ToolTip使用总结一、概述二、附带的ToolTip三、延迟和超时四、自定义ToolTip五、定制化一、概述 ToolTip 其实就是ToolTip&#xff0c;所谓ToolTip其实就是一段简短的文本&#xff0c;告知用户控件的功能。它通常置于父控件之上或之下。提示文本可以是任何富文本格…

常用异常检测模型的应用

常用异常检测模型的应用 描述 异常数据检测不仅仅可以帮助我们提高数据质量&#xff0c;同时在一些实际业务中&#xff0c;异常数据往往包含有价值的信息&#xff0c;如异常交易、网络攻击、工业品缺陷等&#xff0c;因此异常检测也是数据挖掘的重要手段。常用的异常检测模型…

【通过Cpython3.9源码看看python字符串拼接:“+”为什么比join低效】

基本说明 Python字符串拼接中&#xff0c;使用join()方法比运算符更高效&#xff0c;主要原因在于字符串对象的不可变性和内存分配策略。 首先&#xff0c;我们要知道Python字符串是不可变的对象。这意味着&#xff0c;每次使用运算符进行字符串拼接时&#xff0c;Python需要…

Vue2-黑马(四)

目录&#xff1a; &#xff08;1&#xff09;axios-响应格式 &#xff08;2&#xff09;axios-拦截器 &#xff08;3&#xff09;vue2-条件渲染 &#xff08;4&#xff09;vue2-列表渲染 &#xff08;1&#xff09;axios-响应格式 下面看axios的返回响应对象的内部组成 后…

【grpc02】安装protobuf和protoc

目录 Windows环境 下载通用编译器 配置环境变量 安装go专用的protoc的生成器 GoLang中安装插件 如何使用protobuf呢&#xff1f; Mac环境 Protoc安装 Protoc-gen-go的安装 Windows环境 下载通用编译器 下载地址&#xff1a;v3.20.1 Releases protocolbuffers/pr…

【优化算法】使用遗传算法优化MLP神经网络参数(TensorFlow2)

文章目录任务查看当前的准确率情况使用遗传算法进行优化完整代码任务 使用启发式优化算法遗传算法对多层感知机中中间层神经个数进行优化&#xff0c;以提高模型的准确率。 待优化的模型&#xff1a; 基于TensorFlow2实现的Mnist手写数字识别多层感知机MLP # MLP手写数字识别…

Java支付SDK接口远程调试 - 支付宝沙箱环境【公网地址调试】

文章目录1.测试环境2.本地配置3. 内网穿透3.1 下载安装cpolar内网穿透3.2 创建隧道4. 测试公网访问5. 配置固定二级子域名5.1 保留一个二级子域名5.2 配置二级子域名6. 使用固定二级子域名进行访问转发自CSDN远程穿透的文章&#xff1a;Java支付宝沙箱环境支付&#xff0c;SDK接…

Linux命令·traceroute

通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点&#xff08;source&#xff09;到达某一同样的目的地(destination)走的路径可能会不一样&#xff0c;但基本上来说大部分时候所走的路由是相同的。linux系统…

移动端项目开发总结(一)

移动端项目开发总结&#xff08;一&#xff09; 前阵子做租赁项目&#xff0c;风风火火的上线&#xff0c;趁现在还没忘&#xff0c;把用到的东西整理以下&#xff0c;算是对于这个项目的回顾吧。 特效一 &#xff1a; 移动端适配 需求 移动端适配&#xff0c;采用rem单位。…

深入理解Java虚拟机——Java内存区域

1.前言 Java内存区域也叫运行时数据区域&#xff0c;要记得把Java内存模型&#xff08;JMM区分开来&#xff09;。 根据线程是否共享可以把运行时数据区如上图所分。 线程共享 堆内存方法区 线程私有 栈内存 本地方法栈虚拟机栈 程序计数器 接下来&#xff0c;将逐个介绍…

什么是文件传输协议,文件传输协议又是怎么工作的

文件传输协议FTP是一种仍在使用的协议&#xff0c;在上载和下载文件时仍然比较流行&#xff0c;通常是那些太大的文件&#xff0c;需要花费很长时间才能通过常规电子邮件程序作为附件下载进行传输。 从技术上讲&#xff0c;它是“文件传输实用程序”&#xff0c;是许多TCP / I…

腾讯云4核8G12M轻量服务器配置性能评测

腾讯云轻量4核8G12M服务器&#xff0c;之前是4核8G10M配置&#xff0c;现在公网带宽和月流量包整体升级&#xff0c;12M公网带宽下载速度可达1536KB/秒&#xff0c;系统盘为180GB SSD盘&#xff0c;每月2000GB免费流量&#xff0c;腾讯云百科来详细说下4核8G12M轻量应用服务器配…

碳化硅材料在功率半导体中的优劣

开关电源工作频率的提高受到开关损耗的制约 开关电源的工作频率是指开关变换器操作的频率。在开关电源中&#xff0c;一个开关变换器被用来将直流&#xff08;DC&#xff09;能源转换为可用于电子设备的交流&#xff08;AC&#xff09;能源。开关变换器的基本原理是通过对开关…