本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定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 打印沙漏相关推荐

  1. pat 乙级 1027 打印沙漏(C++)

    题目 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 所谓"沙漏形状",是指每行输出奇数个符号:各行符号中心对齐:相邻 ...

  2. PAT乙级(1027 打印沙漏)

    本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ************ ***** 所谓"沙漏形状",是指每行输出奇 ...

  3. PAT 乙级 1027. 打印沙漏(20) Java版

    本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ************ ***** 所谓"沙漏形状",是指每行输出奇 ...

  4. PAT——乙级1036:跟奥巴马一起编程 乙级1027:打印沙漏 (有坑)

    乙级1036 1036 跟奥巴马一起编程 (15 point(s)) 美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统.2014 年底,为庆祝&qu ...

  5. C++学习之路 | PTA乙级—— 1027 打印沙漏 (20 分)(精简)

    1027 打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 所谓"沙漏形状",是指每行输出奇数个 ...

  6. PTA乙级 1027 打印沙漏——20分

    本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ************ ***** 所谓"沙漏形状",是指每行输出奇 ...

  7. PAT Basic Level 1027 打印沙漏 解题思路及AC代码

    PAT 乙级 1027 打印沙漏 v1.0 1. 题目简述及在线测试位置 2. 基本思路 3. 完整AC代码 1. 题目简述及在线测试位置 1.1 给定N个字符,要求使用尽可能多的字符打印出一个沙漏. ...

  8. PAT (Basic Level) Practice (中文)1027 打印沙漏 (20 分)(C++)

    1027 打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 所谓"沙漏形状",是指每行输出奇数个 ...

  9. 1027. 打印沙漏(20)

    1027. 打印沙漏(20) C++AC代码(更新于2017年4月9日) 解题思路,注意到行数与第一行和最后一行字符数都是相等的,根据等差数列找关系 #include <iostream> ...

最新文章

  1. noi 7221 拯救公主 (状态压缩+bfs)
  2. asp.net表单提交方法GET\POST
  3. Android中调用系统已安装的播放器来播放网络流媒体视频
  4. 史上最NB程序员的自白
  5. android+p预览版小米,吃上安卓P!小米8更新首个Android P内测版
  6. 【代码保留】WebService发布本地磁盘信息
  7. 一文了解机器学习以及其相关领域(下)
  8. TCP/IP报文格式及通讯
  9. Java SSL HTTPS进行双重认证开发实践
  10. 微信接入验证 php,php版微信公共平台开发者认证实例
  11. 关于E-R(实体-联系)图
  12. java 封包_封包和解包简介
  13. RoaringBitmap数据结构以及精确去重UDAF实现
  14. 拟立法禁止采购有漏洞软件,“引爆”网络安全行业
  15. 2022贵州省农村信用社员工招聘模拟题及答案
  16. 办公协同应用「我来 wolai」获数千万人民币融资
  17. 认认真真几个高质量人工智能方向的原创公众号
  18. matlab有一座小山,那里,有一座哭泣的小山作文1000字
  19. 安卓UI自动化工具4399AT环境搭建
  20. dual,rowid,rownum

热门文章

  1. js如何提高for循环的效率_让你瞬间提高工作效率的常用js函数汇总
  2. java8+tomcate8仅支持TLSv1.2
  3. 实验三:跟踪分析Linux内核启动过程
  4. Codeforces Round #346 (Div. 2) D. Bicycle Race 叉积
  5. scrapy再学习与第二个实例
  6. 在减少对内地房地产投资的同时,加快了在内地零售业的布局;并积极推动“走出去”战略,在全球52个国家投资多种业务。...
  7. WordPress前台后台页面打开慢的解决方法
  8. 【转载】最好女孩子概率模型
  9. ASP.NET Callback 回调实用讲解
  10. Leetcode-1155 Number of Dice Rolls With Target Sum(掷骰子的N种方法)