首页 > 其他分享 >L1-002 打印沙漏

L1-002 打印沙漏

时间:2025-01-15 16:28:30浏览次数:3  
标签:输出 沙漏 符号 int 打印 002 上半 L1

题目:

L1-002 打印沙漏 - 团体程序设计天梯赛-练习集

题目要求

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

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

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

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

输入格式

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

输出格式

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

输入样例

19 *

输出样例

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

限制条件

  • 代码长度限制: 16 KB
  • 时间限制: 400 ms
  • 内存限制: 64 MB
  • 栈限制: 8192 KB

思路:
我们需要分上半部分和下半部分打印,因为上半部分可以看做是一个等差数列。用int mh = (int)sqrt((n+1)/2);可以求出上半部分的高。知道高我们就可以求出多余的部分。

那么我们开始先打印上部分和下半部分再输出多余部分吧。

代码如下:

#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int main(void)
{
	int n;
	char c;
	cin >> n >> c;
	int mh = (int)sqrt((n+1)/2);//求得是中端(一个点)到顶端的高度
	
	for(int i = mh ; i >= 1 ; i--)//先输出中端到顶端图形(上半部分) 
	{
		for(int kg = 1 ; kg <= mh - i ; kg++)
		cout << " "; 
		for(int ch = 1 ; ch <= 2*i-1 ; ch++)
		cout << c;
		cout << endl;//换行 
	 } 
	 
	 for(int i = 2 ; i <= mh ; i++)//打印剩余的下半段 ,i范围是2~mh是为了保持对称性,而不是mh-1~1 
	 {
	 	for(int kg = 1 ; kg <= mh - i; kg++)
		cout << " ";
		for(int ch = 1 ; ch <= 2*i - 1 ; ch++)
		cout << c;
		cout << endl;//换行 
	 } 
	 cout << n-(2*mh*mh-1);//求出多余的* 
	return 0;
}

标签:输出,沙漏,符号,int,打印,002,上半,L1
From: https://blog.csdn.net/zqystca/article/details/145162917

相关文章

  • ch32L103_EVT_定时器TIM1
    参考博文:https://www.cnblogs.com/liaigu/p/17782198.html在CH32L103EVT开发板的范例TIM_INT中,TIM1_INT_Init函数需要适当修改。1主频96MHz,计数时钟预分频器(TIM1_PSC)为16位,取值0~65535,对应TIM_Prescaler。2TIM_RepetitionCounter对应重复计数值寄存器(TIM1_RPTCR)示例中初......
  • 团体程序设计天梯赛-练习集——L1-003 个位数统计
    前言这道题乍一看感觉怪怪的,然后仔细看看,就会发现没那么难,一起来看一下吧L1-003个位数统计输入格式:每个输入包含1个测试用例,即一个不超过1000位的正整数N。输出格式:对N中每一种不同的个位数字,以D:M的格式在一行中输出该位数字D及其在N中出现的次数M。......
  • 中考英语优秀范文-热点话题-传统文化-002 Spreading Traditional Chinese Culture 传
    1写作要求近日,在公共场所,人们身着汉服拍照,演奏古筝、二胡等传统乐器;校园里,学生吟诵古典诗词,写毛笔字……处处彰显着中国传统文化的魅力。你校英文报正在组织题为SpreadingTraditionalChineseCulture的征文活动,请你选择下表中的一种传统文化的形式,写一篇短文投稿,内容包括:1......
  • 【YashanDB知识库】审计表UNIFIED_AUDIT_TRAIL出现YAS-00220 utf8 sequence is wrong
    【问题分类】功能使用【关键字】UNIFIED_AUDIT_TRAIL,YAS-00220【问题描述】当审计对象的SQL语句包含非标准中文字符时,出现YAS-00220utf8sequenceiswrong,影响审计记录。--第一步:打开审计开关SQL>ALTERSYSTEMSETUNIFIED_AUDITING=true;Succeed.--创建审计......
  • 小九源码-springboot002-Java财会信息管理系统的分析
    ......
  • [中文流行] 阿杜[2002-2023年]所有专辑歌曲合集[无损FLAC/MP3/4.61GB]
    发布时间:2023-05-21语言种类:国语音乐类型:阿杜歌曲大全音源格式:高品质MP3+WAV+FLAC共计大小:4.61GB歌曲简介:阿杜,新加坡华人男歌手,凭借《他一定很爱你》、《撕夜》、《坚持到底》等广为流传的歌曲被大家熟知。他拥有极具个人魅力的烟嗓,歌声总能传递出生动的画面感,一口沙哑的特殊嗓音......
  • dsparse.dll未被指定在Windows运行,代码0xc0000020或0xc000012f解决办法
    在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包文件不完整造成,原因可能是某些系统防护软件将重要的DLL文件识别为可疑,阻止并放入了隔离单里,还有一些常见的DLL文件缺少是因为系统没有安装齐全的微软运行库,还有部分情况是因......
  • dsprop.dll未被指定在Windows运行,代码0xc0000020或0xc000012f解决办法
    在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包文件不完整造成,原因可能是某些系统防护软件将重要的DLL文件识别为可疑,阻止并放入了隔离单里,还有一些常见的DLL文件缺少是因为系统没有安装齐全的微软运行库,还有部分情况是因......
  • dsreg.dll未被指定在Windows运行,代码0xc0000020或0xc000012f解决办法
    在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包文件不完整造成,原因可能是某些系统防护软件将重要的DLL文件识别为可疑,阻止并放入了隔离单里,还有一些常见的DLL文件缺少是因为系统没有安装齐全的微软运行库,还有部分情况是因......
  • 【Vim Masterclass 笔记07】S05L19:Vim 剪切、复制、粘贴操作同步练习
    文章目录S05L19Vim剪切、复制、粘贴操作同步练习(Exercise05-Cut,CopyandPaste)1训练目标2操作指令2.1打开dyp.txt文件2.2交换文件的头两行2.3将文件首行put到文件其他为止2.4练习在光标位置的上方粘贴文本行2.5通过交换字符顺序更正存在的笔误2.6交换......