GESP认证C++编程真题解析 | B4449 [GESP202512 三级] 密码强度

欢迎大家订阅我的CSDN专栏算法题解:C++与Python实现
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!

专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。

适合人群:

  • 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
  • 希望系统学习C++/Python编程的初学者
  • 想要提升算法与编程能力的编程爱好者

附上汇总帖:GESP认证C++编程真题解析 | 汇总


【题目来源】

洛谷:[B4449 GESP202512 三级] 密码强度 - 洛谷

【题目描述】

小杨是学校网络安全小组的成员,今天他的任务是设计一个“密码强度检测器”,帮助同学们检查自己的密码是否足够安全。一个安全的密码需要满足以下条件:

  • 密码至少包含 $8$ 个字符(太短的密码容易被猜出来哦!)。
  • 密码至少包含一个大写字母(A、B、C、...、Z 都可以)。
  • 密码至少包含一个数字(0、1、2、3、...、9 都可以)。

例如:

  • 密码 Paas1s2an 是安全密码(有 $8$ 位、包含大写字母 PA 和数字 12)。
  • 密码 ab1da3cd 不是安全密码(没有大写字母)。
  • 密码 Paabdbcd 不是安全密码(没有数字)。
  • 密码 Pa2 不是安全密码(只有 $3$ 位,太短了)。

【输入】

第一行一个正整数 $T$,代表需要安全检测的密码组数。

对于每组密码,一行包含一个字符串,代表需要安全检测的密码。

【输出】

对于每组密码,输出一行,如果满足强度要求输出 Y,否则输出 N。

【输入样例】

6
PAs1s2an
1a2bCql3
Pa12bsna
ab1da3cd
Paabdbcd
Pa2

【输出样例】

Y
Y
Y
N
N
N

【算法标签】

《洛谷 B4449 密码强度》 #字符串(入门)# #GESP# #2025#

【代码详解】

#include <bits/stdc++.h>
using namespace std;

int t;         // 测试用例的数量
string s;      // 存储输入的字符串

int main()
{
    // 输入测试用例数量
    cin >> t;
    
    // 处理每个测试用例
    while (t--)
    {
        // 输入待检查的字符串
        cin >> s;
        
        // 定义三个标志变量
        bool flag1 = false;  // 标记是否包含大写字母
        bool flag2 = false;  // 标记是否包含数字
        
        // 遍历字符串中的每个字符
        for (int i = 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;  // 密码无效
        }
    }
    
    return 0;
}

【运行结果】

6
PAs1s2an
Y
1a2bCql3
Y
Pa12bsna
Y
ab1da3cd
N
Paabdbcd
N
Pa2
N
posted @ 2026-01-14 13:53  热爱编程的通信人  阅读(3)  评论(0)    收藏  举报