第十五届蓝桥杯大赛软件赛国赛Python 大学 C 组试做【本期题单: 设置密码、栈】
早上好啊大伙,这一期依旧是蓝桥杯备赛刷题的记录。
本期题单:设置密码、栈
前言
前段时间准备省赛,运气好进国赛了。所以就开始准备6月份的国赛。但是近期还有别的比赛要准备,所以刷题的速度比较慢,可能每一期就会有一两道题目。
如果大伙再刷哪道题的时候遇到问题了,也可以留言或者私信,小白兔会去先尝试一下那到题目。
文章目录
- 前言
- 设置密码
- 题目
- 思路分析
- 代码
- 栈
- 题目
- 思路分析
- 代码
- 感谢大伙观看,别忘了三连支持一下
- 大家也可以关注一下我的其它专栏,同样精彩喔~
- 下期见咯~
设置密码
题目
题目链接:设置密码
思路分析
这道题需要去判断的有四点:
- 是否只包含 字母、数字、指定的特殊字符
- 字符串长度
- 大写字母、小写字母、数字、特殊字符所包含类别数目
- 特殊字符种类数
对于第一点,比较麻烦的就是特殊字符,可以将特殊字符用列表存起来,然后用 in 来判断。
第二点就直接用 len() 就行了。
第三点 和 第四点可以用哈希,然后最后用 count 来数。
代码
x = [126, 33, 64, 35, 36, 37, 94, 38, 42, 40, 41, 95] # 定义允许的特殊字符的ASCII码列表(包括!@#$%^&*()_等)def isture(s): # 定义函数:检查字符串是否只包含允许的字符for i in s: # 遍历字符串中的每个字符if not (ord(i) in x or i.isdigit() or i.isalpha()): # 检查字符是否满足条件:# ord(i)获取字符ASCII码,判断是否在x列表中(特殊字符),或是否为数字/字母return False # 若不满足条件,返回Falsereturn True # 所有字符均满足条件,返回Truedef count(s): # 定义函数:统计字符串的字符类型数量和特殊字符种类cnt1 = [0, 0, 0, 0] # 初始化cnt1列表,用于记录是否包含大写字母、小写字母、数字、其他字符(存在则记为1)cnt2 = [0 for _ in range(130)] # 初始化cnt2列表,索引为ASCII码,记录每种特殊字符的出现次数(非0表示存在)for i in s: # 遍历字符串中的每个字符if i.isupper(): # 判断是否为大写字母cnt1[0] = 1 # 标记存在大写字母elif i.islower(): # 判断是否为小写字母cnt1[1] = 1 # 标记存在小写字母elif i.isdigit(): # 判断是否为数字cnt1[2] = 1 # 标记存在数字else: # 其他字符(特殊字符)cnt1[3] = 1 # 标记存在特殊字符cnt2[ord(i)] = 1 # 在cnt2中标记该特殊字符的ASCII码位置为1(存在)return (cnt1.count(1), cnt2.count(1)) # 返回两个统计值:# cnt1.count(1):字符类型数量(大写/小写/数字/特殊中存在的类型数)# cnt2.count(1):不同特殊字符的种类数(ASCII码在0-129范围内的特殊字符数量)n = int(input()) # 读取输入的测试用例数量
for _ in range(n): # 遍历每个测试用例s = input() # 读取输入的字符串if isture(s): # 检查字符串是否为合法字符(仅包含字母、数字、指定特殊字符)c1, c2 = count(s) # 调用count函数获取字符类型数和特殊字符种类数Len = len(s) # 获取字符串长度# 以下为密码强度判断逻辑if Len >= 12 and (c1 >= 3 and c2 >= 3 or c1 >= 4): # 强度等级3条件:# 长度≥12,且(字符类型≥3且特殊字符种类≥3,或字符类型≥4)print(3) # 输出强度等级3elif Len >= 8 and c1 >= 2: # 强度等级2条件:长度≥8且字符类型≥2print(2) # 输出强度等级2elif Len >= 6: # 强度等级1条件:长度≥6(隐含字符类型可能不足2,但至少满足长度)print(1) # 输出强度等级1else: # 长度<6print(0) # 输出强度等级0else: # 字符串包含不允许的字符print(0) # 输出强度等级0
栈
题目
题目链接:栈
思路分析
直接按照题目的意思来写,就是下面这个步骤 ——
- 判断这个数在不在列表里,在的话,删除原本的数
- 计算相邻两个数和是否为奇数
按照原本的意思,每次变化都需要重新计算奇数数量。但是显然这样会超时。
那么我们就需要优化一下,首先能否不去重新计算奇数?
当这个数不在列表中的时候,我们直接判断最后两个数的情况,进行修改即可。
如果它在列表中的时候,我们就需要找到原本它所在的位置,然后处理它的邻里关系。例如说:
1, 2,3,4,5中我们需要修删掉2。
那么我们要判断 1和2 ,2和3,这是原本这个位置的奇数关系,如果是奇数就需要把他们减掉,例如说现在就需要 - 2。然后去掉2之后,1和3也需要判断,例如说现在就不用变。
再然后,我们还需要判断存在的数的位置是不是开头或者结尾。
下面看代码
import os
import sys# 请在此输入您的代码
n = int(input())
cnt = 0
lst = [int(input())]
print(0)
for i in range(1, n):x = int(input())if x in lst:p = lst.index(x)if p > 0 and (lst[p-1] + x) % 2 == 1:cnt -= 1if p < len(lst) - 1 and (lst[p+1] + x) % 2 == 1:cnt -= 1if p > 0 and p < len(lst) - 1 and (lst[p-1] + lst[p+1]) % 2 == 1:cnt += 1lst.remove(x)lst.append(x)if (lst[-2] + x) % 2 == 1:cnt += 1print(cnt)
但是,这个代码只能过70%,有6条还是会超时。
那么再修改一下思路,我们再看看第一条中能不能优化。
判断是否存在新输入的数,以及寻找这个数的位置。
题目并不怎么强调整条列表的每个数的位置,更注重一个数及其两边的数的关系。
那么我们就可以用哈希的方式来寻找,大家可否想到字典这个哈希结构。
我们将这个数作为key,然后两侧的值作为value
删除数据时,可以直接找到这个数及其两侧的值,然后仿照上面的写法就行。
然后这个写法给大伙提醒一些需要注意的点:
- 记得将 0 也进行定义。
- 对于新输入的数要用 [a, 0]来定义。
- 对于上一个数就是重复数,要特别注意
OK,根据上面的提示和思路,整体和链表比较像只是用字典来实现了,大伙可以试试,然后再看下面的代码
代码
import os
import sysn = int(input()) # 读取插入操作的次数
cnt = 0 # 初始化奇数对计数
l_x = int(input()) # 读取第一个节点的值
dic = {0:[0,0], l_x:[0,0]} # 初始化字典,0作为哨兵节点,l_x作为第一个节点
print(0) # 第一个节点插入后,没有相邻节点,输出0for i in range(1, n):x = int(input()) # 读取新插入的节点值# 处理节点已存在的情况(删除操作)if x in dic.keys():l, r = dic[x][0], dic[x][1] # 获取当前节点的前驱和后继if l != 0 and (x + l) % 2 == 1: # 如果前驱存在且和为奇数,减少计数cnt -= 1if r != 0 and (x + r) % 2 == 1: # 如果后继存在且和为奇数,减少计数cnt -= 1if l != 0 and r != 0 and (l + r) % 2 == 1: # 如果前驱和后继存在且和为奇数,增加计数cnt += 1dic[r][0], dic[l][1] = l, r # 更新前驱和后继的指针,跳过当前节点if r == 0: # 如果当前节点是链表尾部,更新l_x为前驱l_x = l# 插入新节点到链表尾部dic[x] = [l_x, 0] # 新节点的前驱为l_x,后继为0dic[l_x][1] = x # 更新l_x的后继为新节点if (x + l_x) % 2 == 1: # 如果新节点与前驱的和为奇数,增加计数cnt += 1l_x = x # 更新l_x为新节点,使其成为新的链表尾部print(cnt) # 输出当前奇数对的数量
感谢大伙观看,别忘了三连支持一下
大家也可以关注一下我的其它专栏,同样精彩喔~
下期见咯~
相关文章:

第十五届蓝桥杯大赛软件赛国赛Python 大学 C 组试做【本期题单: 设置密码、栈】
早上好啊大伙,这一期依旧是蓝桥杯备赛刷题的记录。 本期题单:设置密码、栈 前言 前段时间准备省赛,运气好进国赛了。所以就开始准备6月份的国赛。但是近期还有别的比赛要准备,所以刷题的速度比较慢,可能每一期就会有一…...

报错SvelteKitError: Not found: /.well-known/appspecific/com.chrome.devtools.json
报错信息 SvelteKitError: Not found: /.well-known/appspecific/com.chrome.devtools.json 解决方案一 更新所有依赖 npm update解决方案二(不一定成功) src\lib\hooks.server.ts,每次请求服务器时执行 import type { Handle } from &…...

word添加页眉
问题一: 为word文档添加页眉。 方法: 1、在要添加页眉的第一页页面顶端双击页眉区域,如果添加页眉页上面还有其他页或者与上一页添加页眉内容不同,记得取消“链接到前一节”(点击使其上面没有灰色即可)&…...
JavaScript 中的 BigInt:当普通数字不够“大“时的救星
前言 大家好!今天我们要聊一聊 JavaScript 中那个"大"到不行的数据类型 —— BigInt。如果你曾经因为 JavaScript 的数字精度问题而抓狂,或者好奇为什么 9007199254740992 9007199254740993 会返回 true,那么这篇文章就是为你准备…...
通过mailto:实现web/html邮件模板唤起新建邮件并填写内容
一、背景 在实现网站、html邮件模板过程中,难免会遇到需要通过邮箱向服务提供方发起技术支持等需求,因此,我们需要通过一个功能,能新建邮件并提供模板,提高沟通效率 二、mailto协议配置说明 参数描述mailto:nameema…...

2025推客系统小程序开发:独立部署源码交付,高性价比裂变增长引擎
在私域流量争夺白热化的今天,源码独立部署的推客系统小程序已成为企业构建自主分销体系、降低获客成本的核心利器。基于成熟案例与技术沉淀,我们提供安全可控、高性价比的一站式解决方案,助力企业快速搭建专属推客生态,实现长效增…...
【Python零基础入门系列】第6篇:Python 的数据结构世界(列表、字典、集合、元组)
欢迎来到 Python 零基础入门系列的第六篇! 前面我们学会了写 Hello World、掌握了变量与数据类型、学会了控制程序流程,还能写写函数、读读文件。现在,我们要走进 Python 的数据结构世界,这也是写程序时最核心的一环之一。 你可以把“数据结构”理解成放数据的容器,或者是…...
MVCC 原理与并发控制实现
MVCC 原理与并发控制实现 1. MVCC 基本概念 MVCC(Multi-Version Concurrency Control,多版本并发控制)是现代数据库系统中实现并发控制的核心技术之一。与传统的锁机制不同,MVCC通过维护数据的多个版本来实现非阻塞读取。 关键结论:MVCC的核…...

CentOS 7.0重置root密码
文章目录 版本:CentOS 7.0内核版本:CentOS Linux, with Linux 3.10.0-123.el7.x86_64 服务器重启后,等待进入上述页面,按⬆⬇键,中断正常启动。在此页面按E,进入编辑模式 继续按⬇,找到linux16…...

YOLOV11改进策略【最新注意力机制】CVPR2025局部区域注意力机制LRSA-增强局部区域特征之间的交互
1.1网络结构 1.2 添加过程 1.2.1 核心代码 import torch import torch.nn as nn import torch.nn.functional as F from einops import rearrangedef patch_divide(x, step, ps):"""Crop image into patches.Args:x (Tensor): Input feature map of shape(b, …...
3D建模的全景图谱:从55个工具到元宇宙的数字革命
3D建模已从专业工程师的工具箱演变为全民创作的数字语言。从代码驱动的精确建模到AI自动生成纹理,从开源协作到程序化生成城市,技术正重塑我们创造虚拟世界的方式。本文将系统解析55个核心3D建模工具/插件,涵盖在线编辑器、开源软件、程序化生…...
Kotlin 活动事件通讯跳转深度讲解
在 Android 开发的浩瀚海洋中,活动(Activity)间的事件通讯与跳转犹如构建复杂应用程序的桥梁与纽带,而 Kotlin 语言的加入,更是为这一过程注入了简洁、优雅与高效的活力。本文将深入剖析 Kotlin 开发中安卓活动事件通讯跳转的方方面面,从基础概念到高级技巧,从代码示例到…...
vue + ant-design + xlsx 实现Excel多Sheet页导出功能
Vue Ant Design 扩展:实现Excel多Sheet页导出功能 引言 在复杂业务场景中,单一Sheet页已无法满足数据展示需求。本文将演示如何基于Vue3 Ant Design Vue xlsx技术栈,实现以下高级导出功能: 动态多Sheet页生成复杂数据集关联…...
关于 Web 安全:6. 常见 CMS 开源系统风险点
一、WordPress 开源内容管理系统(CMS),使用 PHP MySQL 构建; 全球超过 40% 网站使用; 支持插件、主题系统,功能可扩展性极强; 也是风险点最多的系统之一,插件/主题贡献了大部分…...

DAY33 简单神经网络
你需要自行了解下MLP的概念。 你需要知道 梯度下降的思想激活函数的作用损失函数的作用优化器神经网络的概念 神经网络由于内部比较灵活,所以封装的比较浅,可以对模型做非常多的改进,而不像机器学习三行代码固定。 1. 神经网络的概念 (Th…...

OBOO鸥柏丨2025年鸿蒙生态+国产操作系统触摸屏查询一体机核心股
在信创产业蓬勃发展的当下,OBOO鸥柏积极响应纯国产化号召,推出基于华为鸿蒙HarmonyOS操作系统的触摸屏查询一体机及室内外场景广告液晶显示屏一体机上市,OBOO鸥柏品牌旗下显示产品均采用国产芯片,接入终端控制端需支持安卓Windows…...

【观成科技】Ymir勒索软件组织窃密木马RustyStealer加密通信分析
1.概述 Ymir勒索软件首次发现于2024年7月,采用ChaCha20加密算法对受害者文件进行加密,加密文件后缀为.6C5oy2dVr6。在攻击过程中,Ymir勒索组织利用名为RustyStealer的窃密木马获取受害企业的账号凭证,为后续横向移动和权限提升奠…...

Vuer开源程序 是一个轻量级的可视化工具包,用于与动态 3D 和机器人数据进行交互。它支持 VR 和 AR,可以在移动设备上运行。
一、软件介绍 文末提供程序和源码下载 Vuer开源程序 是一个轻量级的可视化工具包,用于与动态 3D 和机器人数据进行交互。它支持 VR 和 AR,可以在移动设备上运行。 二、Our features include: 我们的功能包括: light-weight and performa…...
浅谈学习(费曼学习法)
我们在学习的过程中常常会面临遗忘的问题。 欸,之前明明学过,怎么感觉模模糊糊的,忘记了,当然。。。有可能是因为当时就没有听懂。 但是我经常会有一种情况,我觉得自己当时明明听懂了,理解了呀࿰…...
高光谱成像相机:表型技术在林业育种和精确林业的应用
在林木育种和精确林业管理中,表型数据的精准获取与分析是破解基因型-环境-表型互作关系的关键。传统人工测量方式存在效率低、维度单一、破坏性强等局限,而高光谱成像技术凭借其多波段、高分辨率和非接触式的优势,成为林业表型研究的重要工具…...
iOS App启动优化(冷启动、热启动)
App启动优化是提升用户体验的关键环节,主要针对冷启动和热启动进行针对性优化。 冷启动与热启动的定义 冷启动(Cold Launch) 场景:App进程不存在,需系统创建新进程并完成完整初始化(如首次启动或进程被杀死…...

短视频一键搬运 v1.7.1|短视频无水印下载 一键去重
短视频一键搬运是一款全自动智能处理软件,专为短视频创作者设计。它自带去水印、改MD5码、视频去重、视频编辑等功能,能够高效处理大量视频,解放双手并降低成本。该软件支持从多个短视频平台无缝提取视频并去除水印,同时检测敏感词…...

海上石油钻井平台人员安全管控解决方案
一、行业挑战与需求分析 海上钻井平台面临复杂环境风险(如易燃易爆、金属干扰、极端气象)和人员管理难题(如定位模糊、应急响应延迟)。传统RFID或蓝牙定位技术存在精度不足(1-5米)、抗干扰能力差等问题&am…...
(25年5.28)ChatGPT Plus充值教程与实用指南:附国内外使用案例与模型排行
更多具体来源:查看原文 ChatGPT Plus 充值教程 由于国内卡无法直接充值 chatgpt,通常需要借助虚拟卡。目前咱们常用的方式是通过虚拟卡平台获取。因平台审核要求这里不细说,具体看原文。 ChatGPT Plus主要使用方向 ChatGPT Plus 提供了更…...
“以光惠算”走进校园,湖北大学用F5G-A全光网赋能智慧校园
SUN的联合创始人约翰盖奇,曾在1984年提出过一个大胆的猜想——“网络就是计算机”。 到了大模型时代,40多年前的猜想被赋予了新的内涵。大模型训练和推理所需的资源,远超单台计算机的承载能力,涌现出了新的网络范式:大…...
stm32cube ide如何生成LL库工程
在 STM32Cube IDE 里生成使用 LL(Low Layer)库的工程,可按以下步骤操作: 1. 新建 STM32 工程 启动 STM32Cube IDE,选择File→New→STM32 Project。依据需求挑选目标 MCU 型号,接着点击Next。 2. 配置工程…...

TEASER-plusplu Windows Mingw编译
编译记录: 1.下载该库 v2.0 链接1:https://github.com/MIT-SPARK/TEASER-plusplus 连接2:https://github.com/MIT-SPARK/TEASER-plusplus/releases 2.下载 googletest 链接:https://github.com/google/googletest/releases?page2…...
T5和GPT哪个更强大
一图速览:T5 vs GPT 对比总结 维度T5(Text-to-Text Transfer Transformer)GPT(Generative Pretrained Transformer)📌 模型类型编码器-解码器(Encoder-Decoder)解码器-only…...

tryhackme——Data Exfiltration
文章目录 一、网络拓扑二、数据泄露分类2.1 传统数据泄露2.2 C2通信2.3 隧道 三、隧道3.1 Exfiltration using TCP socket3.2 Exfiltration using SSH3.3 Exfiltrate using HTTP(S)HTTP隧道 3.4 Exfiltration using ICMP3.4.1 ICMP数据包结构3.4.2 MSF实现ICMP数据泄露3.4.3 IC…...

阿里云服务器采用crontab定时任务使acme.sh全自动化申请续签免费SSL证书,并部署在Linux宝塔网站和雷池WAF
阿里云服务器安装Linux宝塔面板用于部署网站,又安装了雷池WAF用于防护网站,网站访问正常。可以参考文章:Linux服务器安装Linux宝塔面板并部署wordpress网站以及雷池WAF 本文介绍使用 acme.sh 通过 DNS API 全自动申请和续签免费Let’s Encry…...