静态网站是什么原因ecetc商务网站建设工程师
2026/1/2 4:53:04 网站建设 项目流程
静态网站是什么原因,ecetc商务网站建设工程师,吉安网站,兰州seo排名优化服务B4449 [GESP202512 三级] 密码强度 题目描述 小杨是学校网络安全小组的成员#xff0c;今天他的任务是设计一个“密码强度检测器”#xff0c;帮助同学们检查自己的密码是否足够安全。一个安全的密码需要满足以下条件#xff1a; 密码至少包含 888 个字符#xff08;太短的…B4449 [GESP202512 三级] 密码强度题目描述小杨是学校网络安全小组的成员今天他的任务是设计一个“密码强度检测器”帮助同学们检查自己的密码是否足够安全。一个安全的密码需要满足以下条件密码至少包含888个字符太短的密码容易被猜出来哦。密码至少包含一个大写字母A、B、C、…、Z 都可以。密码至少包含一个数字0、1、2、3、…、9 都可以。例如密码Paas1s2an是安全密码有888位、包含大写字母P、A和数字1、2。密码ab1da3cd不是安全密码没有大写字母。密码Paabdbcd不是安全密码没有数字。密码Pa2不是安全密码只有333位太短了。输入格式第一行一个正整数TTT代表需要安全检测的密码组数。对于每组密码一行包含一个字符串代表需要安全检测的密码。输出格式对于每组密码输出一行如果满足强度要求输出 Y否则输出 N。输入输出样例 #1输入 #16 PAs1s2an 1a2bCql3 Pa12bsna ab1da3cd Paabdbcd Pa2输出 #1Y Y Y N N N说明/提示样例解释密码PAs1s2an是安全密码有888位、包含大写字母P、A和数字1、2。密码1a2bCq13是安全密码有888位、包含大写字母C和数字1、2、3。密码Pa12bsna是安全密码有888位、包含大写字母P和数字1、2。密码ab1da5cd不是安全密码没有大写字母。密码Paabdbcd不是安全密码没有数字。密码Pa2不是安全密码只有333位太短了。数据范围对于所有测试点保证1≤T≤1001 \leq T \leq 1001≤T≤100并且每组密码长度不超过100100100且至少为111每组密码仅由大小写字母和数字组成。题解密码强度检测器题目分析本题要求我们实现一个密码强度检测器判断每个输入的密码是否满足安全要求。安全密码需要同时满足以下三个必要条件缺一不可密码长度至少为8个字符密码中至少包含一个大写字母A-Z密码中至少包含一个数字0-9。若三个条件全部满足输出Y只要有一个条件不满足输出N。解题思路我的解题思路分为四步按顺序处理每个测试用例高效完成判断读取测试用例数首先读取输入的测试用例组数T确定需要处理的密码数量快速过滤长度不达标密码对于每个密码先判断其长度是否小于8。若长度不足直接判定为不安全密码输出N并跳过后续判断提升程序效率遍历密码标记关键字符若密码长度达标遍历密码的每一个字符分别标记是否存在大写字母和数字用两个布尔变量记录状态判断并输出结果根据标记的状态判断是否同时存在大写字母和数字。若同时存在输出Y否则输出N。代码解释以下是我编写的代码逐段为大家解释其功能// 引入C标准库所有头文件无需单独引入iostream、string等简化代码#includebits/stdc.h// 使用标准命名空间避免书写std::前缀usingnamespacestd;intmain(){intn;// 存储测试用例的组数string s;// 存储每一个需要检测的密码字符串cinn;// 读取测试用例组数// 循环n次处理每一个密码用例n--先执行循环再自减等价于for循环遍历所有用例while(n--){cins;// 读取当前需要检测的密码// 第一步快速判断密码长度是否小于8若不足直接判定为不安全if(s.size()8){coutNendl;// 输出不安全标记Ncontinue;// 跳过后续判断直接处理下一个密码提升效率}boold0;// 标记是否存在大写字母0代表不存在1代表存在boolshu0;// 标记是否存在数字0代表不存在1代表存在// 遍历密码的每一个字符逐一判断并更新标记// int(s.size())将无符号的字符串长度转为有符号整数避免下标越界警告for(inti0;iint(s.size());i){// 判断当前字符是否为大写字母A-Z若是则将大写字母标记设为1if(s[i]As[i]Z){d1;}// 判断当前字符是否为数字0-9若是则将数字标记设为1if(s[i]0s[i]9){shu1;}}// 第二步判断是否同时满足长度达标有大写字母有数字// 此时长度已达标只需判断两个标记是否均为1if(d1shu1){coutYendl;// 三个条件均满足输出安全标记Y}else{coutNendl;// 缺少大写字母或数字输出不安全标记N}}return0;// 程序正常结束}1. 头文件与命名空间#include bits/stdc.h引入C标准库的所有头文件无需单独引入string、iostream等简化代码编写using namespace std;使用标准命名空间避免每次写std::cin、std::cout等前缀。2. 变量定义与输入读取int n;存储测试用例组数Tstring s;存储每个需要检测的密码cinn;读取测试用例组数。3. 循环处理每个密码while(n--)循环n次处理每一个密码n--先执行循环再自减等价于for(int i0;in;i)cins;读取当前需要检测的密码字符串。4. 长度判断快速过滤if (s.size()8)s.size()返回字符串s的长度字符个数若长度小于8说明不满足安全条件coutNendl;输出Ncontinue;跳过本次循环的后续代码直接处理下一个密码提升效率。5. 标记大写字母与数字bool d0;初始化大写字母标记为00代表不存在1代表存在bool shu0;初始化数字标记为0for(int i0;iint(s.size());i)遍历密码的每一个字符int(s.size())将size()返回的无符号整数转为有符号整数避免下标越界警告if (s[i]As[i]Z)判断第i个字符是否为大写字母若是则将d设为1一旦找到一个大写字母标记永久为1满足“至少一个”的要求if (s[i]0s[i]9)判断第i个字符是否为数字若是则将shu设为1逻辑同上。6. 最终判断与输出if (d1shu1)判断是否同时存在大写字母d1和数字shu1此时密码长度已达标三个条件全部满足满足则输出Y否则输出Nreturn 0;程序正常结束。总结本代码的核心思路是“先快速过滤无效情况长度不足再遍历标记关键字符”逻辑清晰且高效。时间复杂度为O(T*L)T为测试用例数L为密码最大长度在题目数据范围T≤100L≤100下运行效率极高能快速完成所有测试用例的判断。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询