三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

《B4449 [GESP202512 三级] 密码强度》

《B4449 [GESP202512 三级] 密码强度》

题目背景

对应的选择、判断题:https://ti.luogu.com.cn/problemset/1199

题目描述

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

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

例如:

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

输入格式

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

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

输出格式

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

输入输出样例

输入 #1复制

6 PAs1s2an 1a2bCql3 Pa12bsna ab1da3cd Paabdbcd Pa2

输出 #1复制

Y Y Y N N N

说明/提示

样例解释

  • 密码PAs1s2an是安全密码(有 8 位、包含大写字母PA和数字12)。
  • 密码1a2bCq13是安全密码(有 8 位、包含大写字母C和数字123)。
  • 密码Pa12bsna是安全密码(有 8 位、包含大写字母P和数字12)。
  • 密码ab1da5cd不是安全密码(没有大写字母)。
  • 密码Paabdbcd不是安全密码(没有数字)。
  • 密码Pa2不是安全密码(只有 3 位,太短了)。

数据范围

对于所有测试点,保证 1≤T≤100,并且每组密码长度不超过 100 且至少为 1,每组密码仅由大小写字母和数字组成。

代码实现:

#include <iostream> #include <string> #include <cctype> using namespace std; int main() { int T; cin >> T; while (T--) { string s; cin >> s; bool len_ok = s.size() >= 8; bool upper = false, digit = false; for (char c : s) { if (isupper(c)) upper = true; if (isdigit(c)) digit = true; } if (len_ok && upper && digit) cout << "Y\n"; else cout << "N\n"; } return 0; }
← 返回列表