PTA qls学画图

news2024/11/28 20:50:40

这一天qls在学校综合楼等电梯的时候看到了电梯数字的样子,突然觉得这样写数字特别有趣,于是自己想用程序跑出来。由于正常大小输出数字太小了,qls决定加大难度,他想画出不同大小的数字,你能帮他解决这个问题吗?

输入格式:

第一行输入一个数字n表示数字的大小(具体大小解释见样例解释)。(3≤n≤10)

第二行输入一串只含数字的字符串。(字符串长度不超过20)

输出格式:

输出字符串的图像,每两个数字图像之间有一个空格(具体解释见样例解释)。

样例1

样例输入
3
123
样例输出
  * *** ***
  *   *   *
  * *** ***
  * *     *
  * *** ***

样例2

样例输入
4
567
样例输出
**** **** ****
*    *       *
*    *       *
**** ****    *
   * *  *    *
   * *  *    *
**** ****    *

提示

数字按照电梯样式并用字符‘*’表示边,大小的定义是在一个n×(2n−1)的长方形表示数字,每两个数字之间用空格间隔。

例如大小为3的0到9样式如下:

5e0e70f470.png

思路:

模拟,单纯耗时间。

可以把数字切割一下:

1、1行

2、2~n-1行

3、n行

4、n+1~n*2-2行

5、n*2-1行

之后就是分类讨论判断。

可以把它们分成4类:

1、一行都是*。

2、只有头是*。

3、只有尾是*;

4、只有头尾是*。

AC代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl "\n"
 
const ll N = 1e4+7;
ll n,m,k;
ll v[100];
string s;
 
void sc(ll x){
	if(x == 1)for(ll i = 0 ; i < n ; i ++)cout << "*";
	if(x == 2)for(ll i = 0 ; i < n ; i ++)i == 0 ?cout << "*" : cout << " ";
	if(x == 3)for(ll i = 0 ; i < n ; i ++)i == n-1 ?cout << "*" : cout << " ";
	if(x == 4)for(ll i = 0 ; i < n ; i ++)i == 0 || i == n-1 ?cout << "*" : cout << " ";
	return;
}
 
void solve(){
	cin >> n;
	cin >> s;
	m=s.size();
	for(ll i = 0 ; i < m ; i ++)v[i]=s[i]-'0';
	for(ll i = 1 ; i < n*2 ; i ++){
		for(ll j = 0 ; j < m ; j ++){
			if(j > 0)cout << " ";
			if(v[j] == 1)sc(3);
			if(i == 1){
				if(v[j] == 2 || v[j] == 3 || v[j] == 5 || v[j] == 6 || v[j] == 7 || v[j] == 8 || v[j] == 9 || v[j] == 0)sc(1);
				if(v[j] == 4)sc(4);
			}else if(i < n){
				if(v[j] == 2 || v[j] == 3 || v[j] == 7)sc(3);
				if(v[j] == 5 || v[j] == 6 )sc(2);
				if(v[j] == 0 || v[j] == 4 || v[j] == 8 || v[j] == 9)sc(4);
			}else if(i == n){
				if(v[j] == 2 || v[j] == 3 || v[j] == 4 || v[j] == 5 || v[j] == 6 || v[j] == 8 || v[j] == 9)sc(1);
				if(v[j] == 7)sc(3);
				if(v[j] == 0)sc(4);
			}else if(i < n*2-1){
				if(v[j] == 2)sc(2);
				if(v[j] == 3 || v[j] == 4 || v[j] == 5 || v[j] == 7 || v[j] == 9)sc(3);
				if(v[j] == 0 || v[j] == 6 || v[j] == 8)sc(4);
			}else if(i == n*2-1){
				if(v[j] == 2 || v[j] == 3 || v[j] == 5 || v[j] == 6 || v[j] == 8 || v[j] == 9 || v[j] == 0)sc(1);
				if(v[j] == 4 || v[j] == 7)sc(3);
			}
		}
		cout << endl;
	}
	return ;
}
 
int main(){
	ll t=1;//cin >> t;
	while(t --)solve();
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1586866.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ELK,ELFK日志收集分析系统

ELK简介 ELK是一套完整的日志集中处理解决方案&#xff0c;将ElasticSearch&#xff0c;Logstash和Kibana三个开源工具配合使用&#xff0c;实现用户对日志的查询、排序、统计需求。 ELK工作原理 在所有需要收集日志的服务器上部署Logstash&#xff0c;或者先将日志进行集中…

渗透入门靶场大盘点

写给新手朋友入门&#xff0c;有了靶场丰富自己思路&#xff0c;也巩固自己的技术。当然新手老手都可以玩玩。 这期盘点渗透靶场&#xff0c;排名不分前后&#xff0c;还有其他靶场欢迎留言提出&#xff01;以及在留言当中评论出你最喜欢的靶场并附上理由。 本期是盘点入门必刷…

用html写一个雨的特效

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>雨特效</title><link rel"stylesheet" href"./style.css"> </head> <body> <div id"wrap-textu…

19 文件接口

文件概念 文件指的是文件内容属性&#xff0c;对文件的操作无外乎就是对内容或者属性的操作 为什么平时不用文件接口 我们运行程序访问文件&#xff0c;本质是进程在访问文件&#xff0c;向硬件写入内容&#xff0c;只有操作系统有这个权限。普通用户想写入内容呢&#xff1…

SpringBoot学习笔记四

SpringBoot学习笔记四-监听机制 1. SpringBoot监听器1.1 无需配置1.1.1 CommandLineRunner使用1.1.2 ApplicationRunner的使用1.1.3 CommandLineRunner与ApplicationRunner的区别 1.2 需要创建META-INF文件&#xff0c;并在其中创建spring.factories&#xff0c;配置相关的信息…

SpringMVC原理及工作流程

组件 SpringMVC的原理主要基于它的各个组件之间的相互协作交互&#xff0c;从而实现了Web请求的接收&#xff0c;处理和响应。 它的组件有如下几个&#xff1a; DispatcherServlet前端控制器 HandlerMapping处理器映射器 Controller处理器 ModelAndView ViewResolver视图…

make/makefile学习

文章目录 1、makefile函数1.1、字符串替换函数&#xff1a;subst1.2、模式字符串替换函数&#xff1a;patsubst1.3、去空格函数&#xff1a;strip1.4、查找字符串函数&#xff1a;findstring 2、、:、&#xff1f;区别 1、makefile函数 1.1、字符串替换函数&#xff1a;subst …

2000-2022年县域常住人口和户籍人口数据

2000-2022年县域常住人口和户籍人口数据/县常住人口及县户籍人口数据 1、时间&#xff1a;2000-2022年 2、来源&#xff1a;县域统计年鉴、各省年鉴 3、指标&#xff1a;户籍人口数、常住人口数 4、范围&#xff1a;县区级&#xff0c;具体县名单参看数据预览 5、缺失情况…

文心一言 VS 讯飞星火 VS chatgpt (233)-- 算法导论17.2 1题

一、假定对一个规模永远不会超过 k 的栈执行一个栈操作序列。执行 k 个操作后&#xff0c;我们复制整个栈来进行备份。通过为不同的栈操作赋予适合的摊还代价&#xff0c;证明&#xff1a; n 个操作(包括复制栈)的代价为 O(n) 。 文心一言&#xff1a; 为了证明对一个规模永远…

直播带货行业将迎来大地震

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 为什么这么多人喊着关闭直播带货?实体经济是到底因为什么萧条的?为什么大街上冷冷清清的?是房租、虚高的价格、还是直播带货引起的? 在4月9日的国务院政策吹风会上&#xff0c;市场监管明确指出&#xff1a; …

MINI2440 开发板 给他干出来了

环境是ubuntu14.04。不要问我为什么是这个版本&#xff0c;因为之前的ubuntu12.04 环境干不出来&#xff0c;你去试试就知道了&#xff01;各种资源包下载不下来。 输入启动参数&#xff1a; 进入MINI2440&#xff1a;别说心里一万个开心&#xff0c;启动完成&#xff0c;输入p…

关于HTTP1.0、1.1、1.x、2.0、3.0与HTTPS之间的理解

关于HTTP1.0、1.1、1.x、2.0、3.0与HTTPS之间的理解 HTTP的由来 HTTP是Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;的缩写。它的发展是万维网协会&#xff08;World Wide Web Consortium&#xff09;和Internet工作小组IETF&#xff08;Internet Eng…

【软件测试之判定表法】

【软件测试之判断表法】(蓝桥课学习笔记) 1、判定表法的概念 判定表又称“决策表”&#xff0c;是一种表格状的图形工具&#xff0c;适用于处理判断条件较多&#xff0c;各条件又相互组合、有多种决策方案的情况。由于决策表可以把复杂的逻辑关系和多种条件组合的情况表达的既…

最新国产中文版官网chatGPT镜像网站

分享5个国产中文版chatGPT镜像网站&#xff0c;希望可以帮助到您&#xff01; 1️⃣ HiClaude3基于国外原版GPT模型、Claude模型开发&#xff0c;是资源丰富的全能镜像&#xff0c;适合各行各业的工作者。不仅有gpt&#xff0c;而且还支持图片对话、文件对话&#xff0c;轻松解…

zookeeper解析

目录 zookeeper定义 zookeeper定义 Zookeeper是一个开源的分布式的&#xff0c;为分布式框架提供协调服务的Apache项目 Zookeeper工作机制 zookeeper从设计模式角度来理解&#xff1a; 是一个基于观察者模式设计的分布式服务管理框架&#xff0c;它负责存储和管理大家都关心…

.a和.so库文件是什么?

我们在编译开源代码后&#xff0c;通常会生成.a和.so这两个库文件&#xff0c;这两个文件有什么区别&#xff1f;又如何使用&#xff1f; 在 Linux 中&#xff0c;.a 和 .so 文件都是库文件&#xff0c;但它们有一些区别&#xff1a; 静态库文件&#xff08;.a&#xff09;&am…

【C++算法】线性DP详解:数字三角形、最长上升子序列、最长公共子序列、最长公共子串、字符串编辑距离

文章目录 1&#xff09;数字三角形1&#xff1a;顺推2&#xff1a;逆推 2&#xff09;最长上升子序列1&#xff1a;线性DP做法2&#xff1a;二分优化 3&#xff09;最长公共子序列4&#xff09;最长公共子串5&#xff09;字符串编辑距离 1&#xff09;数字三角形 1&#xff1a…

LabVIEW闭环步进电机运动系统设计及精度分析

LabVIEW闭环步进电机运动系统设计及精度分析 在自动化设备不断发展的当代&#xff0c;闭环步进电机以其高精度和可靠性成为了自动化设备的重要组成部分。以LabVIEW软件为核心&#xff0c;结合运动控制卡及驱动器模块&#xff0c;设计并实现了一个闭环步进电机的多轴运动控制系…

内核驱动更新

1.声明我们是开源的 .c 文件末尾加上 2.在Kconfig里面修改设备&#xff0c;bool&#xff08;双态&#xff09;-----》tristate&#xff08;三态&#xff09; 3.进入menuconfig修改为M 4.编译内核 make modules 也许你会看到一个 .ko 文件 5.复制到根目录文件下 在板子…

XAI有什么用?探索LLM时代利用可解释性的10种策略

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 你是否也好奇&#xff0c;在大模型时代&#xff0c;可解释性人工智能技术&#xff08;XAI&am…