欢迎大家订阅我的专栏:算法题解:C++与Python实现!
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!
专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。
适合人群:
- 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
- 希望系统学习C++/Python编程的初学者
- 想要提升算法与编程能力的编程爱好者
附上汇总帖:GESP认证C++编程真题解析 | 汇总
【题目来源】
洛谷:[B4449 GESP202512 三级] 密码强度 - 洛谷
【题目描述】
小杨是学校网络安全小组的成员,今天他的任务是设计一个“密码强度检测器”,帮助同学们检查自己的密码是否足够安全。一个安全的密码需要满足以下条件:
- 密码至少包含8 88个字符(太短的密码容易被猜出来哦!)。
- 密码至少包含一个大写字母(A、B、C、…、Z 都可以)。
- 密码至少包含一个数字(0、1、2、3、…、9 都可以)。
例如:
- 密码
Paas1s2an是安全密码(有8 88位、包含大写字母P、A和数字1、2)。 - 密码
ab1da3cd不是安全密码(没有大写字母)。 - 密码
Paabdbcd不是安全密码(没有数字)。 - 密码
Pa2不是安全密码(只有3 33位,太短了)。
【输入】
第一行一个正整数T TT,代表需要安全检测的密码组数。
对于每组密码,一行包含一个字符串,代表需要安全检测的密码。
【输出】
对于每组密码,输出一行,如果满足强度要求输出 Y,否则输出 N。
【输入样例】
6 PAs1s2an 1a2bCql3 Pa12bsna ab1da3cd Paabdbcd Pa2【输出样例】
Y Y Y N N N【算法标签】
《洛谷 B4449 密码强度》 #字符串(入门)# #GESP# #2025#
【代码详解】
#include<bits/stdc++.h>usingnamespacestd;intt;// 测试用例的数量string s;// 存储输入的字符串intmain(){// 输入测试用例数量cin>>t;// 处理每个测试用例while(t--){// 输入待检查的字符串cin>>s;// 定义三个标志变量boolflag1=false;// 标记是否包含大写字母boolflag2=false;// 标记是否包含数字// 遍历字符串中的每个字符for(inti=0;i<s.size();i++){// 检查是否包含大写字母 (A-Z)if(s[i]>='A'&&s[i]<='Z'){flag1=true;}// 检查是否包含数字 (0-9)if(s[i]>='0'&&s[i]<='9'){flag2=true;}}// 判断密码是否有效// 条件1: 长度至少8个字符 (s.size() >= 8)// 条件2: 包含至少一个大写字母 (flag1 == true)// 条件3: 包含至少一个数字 (flag2 == true)if(s.size()>=8&&flag1&&flag2){cout<<"Y"<<endl;// 密码有效}else{cout<<"N"<<endl;// 密码无效}}return0;}【运行结果】
6 PAs1s2an Y 1a2bCql3 Y Pa12bsna Y ab1da3cd N Paabdbcd N Pa2 N