当前位置:网站首页>PAT乙级-B1027 打印沙漏(20)
PAT乙级-B1027 打印沙漏(20)
2022-08-06 22:29:00 【nekoha_dexter】
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印
*****
***
*
***
*****
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
输入格式:
输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。
输出格式:
首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。
输入样例:
19 *
输出样例:
*****
***
*
***
*****
2#include<iostream>
#include<cmath>
#include<string>
using namespace std;
int main(){
int n, r;
char c;
cin >> n >> c;
//可知1,3,5……的数列,前n项和sn = n^2,而沙漏的和 bn = sn*2 - 1
//r表示沙漏的一半行数(向上取整)
r = sqrt((n+1)/2);
int t = r;
string s;
//开始输出,从r行开始输出至1之前,记得插入空格
while(t > 1){
s.insert(0,1+2*(t-1),c);
s.insert(0,r - t, ' ');
cout << s<<endl;
s.clear();
t--;
}
//从1开始至r输出
while(t <= r){
s.insert(0,1+2*(t-1), c);
s.insert(0,r - t, ' ');
cout << s << endl;
s.clear();
t++;
}
cout << n - 2*r*r + 1 << endl;
return 0;
}
边栏推荐
猜你喜欢
随机推荐
Node学习笔记
c000021a安全模式也进不去 电脑开机蓝屏c000021a怎么解决
猿人学-第一题
硅谷课堂第五课-腾讯云对象存储和课程分类管理
Cesium快速上手1-CesiumWidget-Scene结构
罗技键盘怎么调灯光 罗技k845怎么切换灯光
七夕特辑之心形的线
Axure9 basic interactions (2)
HCIP笔记(八)
Mel滤波器:模拟人耳对不同频率语音的感知【人类对频率的感知不是线性的】【对低频信号的感知要比高频信号敏感;对1kHz以下,与频率成线性关系;对1kHz以上,与频率成对数关系】【频率越高,感知力越弱】
The Node study notes
This article takes you to understand the basic principles of webrtc (hands-on 1v1 video call)
一文带你了解webrtc基本原理(动手实现1v1视频通话)
硅谷课堂第二课-搭建项目环境和开发讲师管理接口
12条MySQL优化技巧,提速不止十倍!
Compose 进阶挑战来啦!直播预告 | 8 月 7 日晚 19:30 与 GDE 导师面对面
【How to use Medooze to realize multi-party video conference】
Unity-ugui-slider上下限值一致时进度显示问题
Before start of result set error (resolved)
uniapp swipe left to delete effect 2, effect 1 (choose one of 2 methods) (organize)









