PAT乙级 1027 打印沙漏
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
输入格式:
输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。
输出格式:
首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。
输入样例:
19 *
结尾无空行
输出样例:
************
*****
2
结尾无空行
思路:
这题主要考的是数学而不是编程,主要在于:不管你是怎么计数的,一定要确定好自己的计数单位,比如说是从0开始还是从1开始。
先判断一下,要是输入的少于7那就直接只输出一个就行了,直接结束;
若大于7,那么先设置一个a1记录一共有多少符号,再让总数/2,当作是上方和下方总共最多所拥有的符号数,之后找行数和符号数的规律,求出来最多可以有几行——别忘了让a减去已知的行数的符号数,再找行数和空格的规律输出空格,再输出符号,每执行一次输出符号的操作就让a1-1,由于一开始不输出空行,所以在每一行结束之后再输出一个换行符。
然后中间那一个符号单独空出来,记得输出空格控制格式。
下方的输出和上方是一个道理,有的数改一下就行了。
代码如下:
#include<iostream>
#include<iomanip>
#include<vector>
#include<set>
#include<list>
#include<deque>
#include<stack>
#include<unordered_map>
#include<cctype>
#include<map>
#include<string>
#include<algorithm>
#include<cmath>
using namespace std;int main()
{int a;char c;cin >> a >> c;if (a > 1 && a < 7){cout << c<<endl<<a-1;return 0;}else{int a1 = a;a /= 2;int row=0;for (int i = 1; 2 * i + 1 <= a; i++){row = i;a -= 2 * i + 1;}for (int i = row; i >=1; i--){for (int j = 0; j+i <row ; j++)cout << " ";for (int j = 1; j <= 2 * i + 1; j++){cout << c;a1--;}cout << endl;}for (int i = 0; i < row; i++)cout << " ";cout << c << endl;a1--;for (int i = 1; i <= row; i++){for (int j = 0; j + i < row; j++)cout << " ";for (int j = 1; j <= 2 * i + 1; j++){cout << c; a1--;}cout << endl;}cout << a1;}return 0;
}
PAT乙级 1027 打印沙漏相关推荐
- pat 乙级 1027 打印沙漏(C++)
题目 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 所谓"沙漏形状",是指每行输出奇数个符号:各行符号中心对齐:相邻 ...
- PAT乙级(1027 打印沙漏)
本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ************ ***** 所谓"沙漏形状",是指每行输出奇 ...
- PAT 乙级 1027. 打印沙漏(20) Java版
本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ************ ***** 所谓"沙漏形状",是指每行输出奇 ...
- PAT——乙级1036:跟奥巴马一起编程 乙级1027:打印沙漏 (有坑)
乙级1036 1036 跟奥巴马一起编程 (15 point(s)) 美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统.2014 年底,为庆祝&qu ...
- C++学习之路 | PTA乙级—— 1027 打印沙漏 (20 分)(精简)
1027 打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 所谓"沙漏形状",是指每行输出奇数个 ...
- PTA乙级 1027 打印沙漏——20分
本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ************ ***** 所谓"沙漏形状",是指每行输出奇 ...
- PAT Basic Level 1027 打印沙漏 解题思路及AC代码
PAT 乙级 1027 打印沙漏 v1.0 1. 题目简述及在线测试位置 2. 基本思路 3. 完整AC代码 1. 题目简述及在线测试位置 1.1 给定N个字符,要求使用尽可能多的字符打印出一个沙漏. ...
- PAT (Basic Level) Practice (中文)1027 打印沙漏 (20 分)(C++)
1027 打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 所谓"沙漏形状",是指每行输出奇数个 ...
- 1027. 打印沙漏(20)
1027. 打印沙漏(20) C++AC代码(更新于2017年4月9日) 解题思路,注意到行数与第一行和最后一行字符数都是相等的,根据等差数列找关系 #include <iostream> ...
最新文章
- noi 7221 拯救公主 (状态压缩+bfs)
- asp.net表单提交方法GET\POST
- Android中调用系统已安装的播放器来播放网络流媒体视频
- 史上最NB程序员的自白
- android+p预览版小米,吃上安卓P!小米8更新首个Android P内测版
- 【代码保留】WebService发布本地磁盘信息
- 一文了解机器学习以及其相关领域(下)
- TCP/IP报文格式及通讯
- Java SSL HTTPS进行双重认证开发实践
- 微信接入验证 php,php版微信公共平台开发者认证实例
- 关于E-R(实体-联系)图
- java 封包_封包和解包简介
- RoaringBitmap数据结构以及精确去重UDAF实现
- 拟立法禁止采购有漏洞软件,“引爆”网络安全行业
- 2022贵州省农村信用社员工招聘模拟题及答案
- 办公协同应用「我来 wolai」获数千万人民币融资
- 认认真真几个高质量人工智能方向的原创公众号
- matlab有一座小山,那里,有一座哭泣的小山作文1000字
- 安卓UI自动化工具4399AT环境搭建
- dual,rowid,rownum
热门文章
- js如何提高for循环的效率_让你瞬间提高工作效率的常用js函数汇总
- java8+tomcate8仅支持TLSv1.2
- 实验三:跟踪分析Linux内核启动过程
- Codeforces Round #346 (Div. 2) D. Bicycle Race 叉积
- scrapy再学习与第二个实例
- 在减少对内地房地产投资的同时,加快了在内地零售业的布局;并积极推动“走出去”战略,在全球52个国家投资多种业务。...
- WordPress前台后台页面打开慢的解决方法
- 【转载】最好女孩子概率模型
- ASP.NET Callback 回调实用讲解
- Leetcode-1155 Number of Dice Rolls With Target Sum(掷骰子的N种方法)