1027 打印沙漏 (20分)——27行代码AC(结构清晰)
立志用更少的代码做更高效的表达
PAT乙级最优题解——>传送门
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印
************
*****
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。 给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
输入格式:
输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。
输出格式:
首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。
输入样例:
19 *
输出样例:
************
*****
2
解题思路:
1、将图形分成三部分, 上部分, 中间一行, 下部分。
2、利用循环求出星号最多的一行星号个数, 然后-2循环, 分别遍历上下两部分, 补充中间部分即可。
注意:
1、每行*后面是没有空格的, 如第三行是:空格空格*
,而不是:空格空格*空格空格
2、由于上下两部分代码是对称的, 因此可以采用函数复用的方式, 用一段代码来表示。 通过传递参数的不同来实现不同部分。 具体见代码。
代码展示
#include<bits/stdc++.h>
using namespace std;char c;
int n, num = 1, num1; void Operation(bool flag) { //输出上下部分, 通过flag控制num1 = num;for(int i = 3; i <= num; i+=2) {int len = (num-num1)/2;for(int j = 0; j < len; j++) cout << ' ';for(int j = 0; j < num1; j++) cout << c;flag?num1-=2:num1+=2;cout << '\n';}
}int main() {cin>>n>>c; n-=1;for(int i = 3; ; i+=2) { //计算出num(最多*的一行有多少*) if(n - i*2 < 0) { num = i-2; break; }n -= i*2; //n是剩余的个数 }Operation(true);//上半部分 for(int i = 0; i < (num-num1)/2; i++) cout << ' '; //输出中间一行 cout << c << '\n';num1+=2;Operation(false);//下半部分 cout << n;
return 0; }
每日一句
你不勇敢,没人替你勇敢。
1027 打印沙漏 (20分)——27行代码AC(结构清晰)相关推荐
- C++学习之路 | PTA乙级—— 1027 打印沙漏 (20 分)(精简)
1027 打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 所谓"沙漏形状",是指每行输出奇数个 ...
- PTA练习题1027 打印沙漏 (20分)
1027 打印沙漏 (20分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 所谓"沙漏形状",是指每行输出奇数个符 ...
- 1027 打印沙漏 (20 分)
1027 打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 所谓"沙漏形状",是指每行输出奇数个 ...
- 1081 Rational Sum (20 分)_22行代码AC
立志用最少的代码做最高效的表达 PAT甲级最优题解-->传送门 Given N rational numbers in the form numerator/denominator, you a ...
- PTA乙级 1027 打印沙漏——20分
本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ************ ***** 所谓"沙漏形状",是指每行输出奇 ...
- 1027 打印沙漏 (20分)
本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 所谓"沙漏形状",是指每行输出奇数个符号:各行符号中心对齐:相邻两行符 ...
- 【PAT乙级】1027 打印沙漏 (20 分)
题目地址 #include<cstdio> #include<iostream> using namespace std; int main(void) {int n; cha ...
- 1027 Colors in Mars (20 分)_20行代码AC
立志用最少的代码做最高效的表达 PAT甲级最优题解-->传送门 People in Mars represent the colors in their computers in a simil ...
- 1094 谷歌的招聘 (20分)_25行代码AC
立志用最少的代码做更高效的表达 PAT乙级最优题解-->传送门 2004 年 7 月,谷歌在硅谷的 101 号公路边竖立了一块巨大的广告牌(如下图)用于招聘.内容超级简单,就是一个以 .com ...
最新文章
- 网络攻城狮怎么看待TCP/IP协议与UDP协议?
- 在Android Studio中进行代码混淆
- 数据库操作错误:删除对于用户'root':数据库主体在该数据库中拥有架构,无法删除...
- 极致无边界!2021 神策数据 Tech-Day 即将开幕
- 坚持做一件事情真的很不容易,首先必须要克服惰性!
- 【半译】在ASP.NET Core中创建内部使用作用域服务的Quartz.NET宿主服务
- 淮北计算机考试报名,淮北2019年12月计算机等级考试报名入口/注意事项
- iOS14.5 Beta7使用体验感受
- CentOS操作系统的22个log日志
- cnki账号 中国知网 免费 入口 用户名 密码 国内外学术刊物数据库账号
- 一位大牛对于写技术博客的一些建议
- 管理学论文对人性的假设
- Hypervisor
- 【deepin】安装与设置win10独立双系统 - 战神Z7-SL7S3安装deepin15.11,并双屏显示
- PHP推荐简单采集微博文章信息自用
- 国风就是帅,会三板吗,看看新天吧
- 推荐几款视频声音变声软件给大家
- 【引语收集计划】《启迪》 本雅明--导言-瓦尔特.本雅明 : 1892-1940 by汉娜.阿伦特
- 夜暗方显万颗星,灯明始见一缕尘
- python time localtime()