PAT——1027. 打印沙漏

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

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

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

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

输入格式:

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

输出格式:

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

输入样例:

19 *

输出样例:

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

 1 package com.hone.basical;
 2 
 3 import java.util.Scanner;
 4 
 5 /**
 6  * 原题目:https://www.patest.cn/contests/pat-b-practise/1025
 7  * 
 8  * @author Xia 有一个陷阱:后面的空格不能要啊 同时这种打印的问题一定要从第一行开始考虑(因为基于基础语言打印的情况都是顺序打印的)
 9  */
10 public class basicalLevel1027PrintStone {
11     public static void main(String[] args) {
12         Scanner s = new Scanner(System.in);
13         int n = s.nextInt();
14         String e = s.next();
15         int sum = 0; // 表示当前总共数量
16         int end = 0; // 利用end表示结束的时候总共打印多少行
17         int left = 0; // 表示剩余***的个数
18         for (int i = 0; sum < n; i++) {
19             sum = fx(i);
20             if (sum > n) { // 如果当前sum循环中计算超过了总的n,则调出循环,并且减去当前i层总*数,同时调出循环
21                 end = i - 1;
22                 left = n - (sum - 4 * i - 2);
23                 break;
24             }
25         }
26         // 该循环用于输出倒三角的形状
27         for (int j = end; j >= 0; j--) {
28             // 打印左边的空格
29             for (int i = 0; i < (2 * end + 1 - (2 * j + 1)) / 2; i++) {
30                 System.out.print(" ");
31             }
32             for (int i = 0; i < 2 * j + 1; i++) {
33                 System.out.print(e);
34             }
35             System.out.println();
36         }
37 
38         // 该循环用于输出下方的正三角形
39         for (int j = 1; j <= end; j++) {
40             for (int i = 0; i < (2 * end + 1 - (2 * j + 1)) / 2; i++) {
41                 System.out.print(" ");
42             }
43             for (int i = 0; i < 2 * j + 1; i++) {
44                 System.out.print(e);
45             }
46             System.out.println();
47         }
48         
49         //最后一行打印所有剩余的  * 数
50         System.out.print(left);
51     }
52 
53     // 首先利用递归来求解sum的总和(实际上这里不太推荐使用递归,可以利用一个循环来代替递归)
54     public static int fx(int i) {
55         if (i == 0)
56             return 1;
57         else
58             return fx(i - 1) + 4 * i + 2;
59     }
60 }

 





转载于:https://www.cnblogs.com/xiaxj/p/7985808.html

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

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

相关文章

Netcdf中多变量导出代码示例

多个变量进行导出代码如下&#xff1a; GetMapping("/export")public String varExport(ModelAttribute FileSaveVars params ) throws IOException, InvalidRangeException { // 1 设置原始文件路径转存文件路径String filePath "/Users/caowei/workspac…

Android 微信分享

起调效果 分享到朋友 分享到朋友圈 分享效果&#xff1a; 1、登录 微信开发平台 创建Android应用 微信开放平台&#xff1a;https://open.weixin.qq.com/cgi-bin/index?thome/ind…

首页列表显示全部问答,完成问答详情页布局

首页列表显示全部问答&#xff1a;将数据库查询结果传递到前端页面 Question.query.all()前端页面循环显示整个列表。问答排序完成问答详情页布局&#xff1a;包含问答的全部信息评论区以往评论列表显示区。在首页点击问答标题&#xff0c;链接到相应详情页。app.route(/base2)…

Netcdf 文件多属性,按照时间段导出代码示例

由于个人即是java初学者&#xff0c;又是netcdf文件小白&#xff0c;所以为了实现最终效果&#xff0c;可以对一个初始nc文件进行筛选指定变量&#xff0c;并且可以设定时间区间&#xff0c;花得时间比想象的要多&#xff0c;最终实现了效果&#xff0c;代码示例如下&#xff1…

【软工项目组】第九次会议

第九次会议 时间&#xff1a;2017-12-5 22:00 至 23:00 地点&#xff1a;第三教学楼A楼休息区 任务都已经分配完毕了&#xff0c;大家分别完成页面样式、前端逻辑、后端数据库、服务器域名配置的任务。最近几次的会议主要是集体写代码与答疑讨论的时间。 后端的接口在今天上传…

Android 集成微信分享2,实现微信分享

1、build.gradle下添加微信sdk依赖 compile (com.xyzlf.share:sharesdk:0.0.10) {exclude group: com.android.support, module: appcompat-v7 } 2、MainActivity文件夹下创建wxapi文件夹WXEntryActivity类&#xff0c;并配置到manifest里面&#xff1a; public class WXEnt…

ERA5、ERA-interm是啥

ERA5是欧洲中期天气预报中心最新产品。 ERA-Interim 是再分析数据&#xff0c;提供两套数据&#xff0c;一个是同化分析数据&#xff0c;一个是预报数据。分析数据&#xff0c;6小时的时间间隔&#xff0c;每12小时循环一次。例如&#xff0c;0 UTC 开始&#xff0c;6 UTC&…

Liunx 重定向,管道符(转)

原作网址&#xff1a;http://blog.csdn.net/qq_16811963/article/details/52997178 输出重定向 >代表以覆盖的方式将命令的正确输出输出到指定的文件或设备当中。 >>代表以追加方式输出。 常用的输出重定向&#xff1a; 1.命令 >> 文件 2>&1 :以追加的方…

使用run-rs启动mongodb

为什么需要&#xff1a; 因为在mac上直接使用社区版&#xff0c;进行备份数据导入时&#xff0c;会报错&#xff1a; MongoError: Transaction numbers are only allowed on a replica set member or mongos run-rs可以零配置启动mongodb 1、npm install run-rs -g 2、run…

Android Handler机制

1.什么是Handler&#xff1f; Handler是可以通过发送和处理Message和Runnable对象来关联相应线程的MessageQueue。通常我们认为它是一种异步机制。 a.可以让对应的Message和Runnable在未来的某个时间点进行相应的处理。 b.让自己想要的耗时操作在子线程中完成&#xff0c;让更新…

你的鼠标有多快-小游戏

HTML <div class"box"><h3>你的鼠标有多快&#xff1f;</h3><p>游戏说明&#xff1a;点击开始游戏&#xff0c;随机掉下QQ表情&#xff0c;点中它&#xff0c;千万别让它掉下去&#xff01;&#xff01;</p><input type"butto…

input文件上传代码片段

需求&#xff1a;自己留个记录 <div class"button—2" click"uploadFile"><input type"file" ref"file" multiple"multiple" change"fileChange" style"display:none">上传</div>as…

android图片查看器,实现图片加载进度监听,实现保存图片

1、添加依赖 implementation com.github.bumptech.glide:glide:4.6.1 compile com.github.chrisbanes:PhotoView:2.0.0 compile com.squareup.okhttp3:okhttp:3.9.0 2、实现fragmentactivity&#xff1a; /*** 作者&#xff1a;created by meixi* 邮箱&#xff1a;131647168…

iPhone X Web 设计

iPhone X Web 设计 原文地址&#xff1a;https://webkit.org/blog/7929/designing-websites-for-iphone-x/ 开箱即用(开发者无需进行任何设置)&#xff0c;在iPhone X中&#xff0c;Safari 就可以完美的在全面屏上显示你既有的网站。网页内容会自动插入到显示的安全区域以至于不…