P12278 [蓝桥杯 2024 国 Python A] 设置密码
题目描述
小蓝设计了一个管理系统,管理系统需要支持设置用户的密码,并给出密码的强度。合法密码要求如下:
只能包含大小写字母、数字和特殊字符 `~!@#$%^&*()_`,以上字符的 ASCII 码依次为: $126$,$33$,$64$,$35$,$36$,$37$,$94$,$38$,$42$,$40$,$41$,$95$。
密码的强度按下列方式判断:
- 强密码: 密码长度 $\geq 12$ ,同时包含大写字母、小写字母、数字、特殊字符,或包含包括特殊字符在内的其中三种,且特殊字符的种类数 $\geq 3$;
- 中密码: 密码长度 $\geq 8$ ,不属于强密码,至少有大写字母、小写字母、数字、特殊字符中的两种;
- 弱密码: 密码长度 $\geq 6$ ,不属于强密码或中密码。
三者都不是的密码同样视为不合法的密码。
给定若干个字符串 (每行一个),判断其是否能作为密码,能作为密码时判断密码的强度。
对每个字符串输出 $0,1,2,3$ 中的一个,分别对应不合法的密码、弱密码、中密码、强密码四种情况。
输入格式
输入的第一行包含一个整数 $T$ ,表示需要判断的密码的个数。
接下来 $T$ 行,每行包含一个字符串 $S_i$ ,表示一个需要判断的密码。保证每个字符串中仅包含 ASCII 码中的可打印字符(ASCII 码在 $32$ 至 $126$ 之间,包含 $32$ 和 $126$)。
输出格式
输出 $T$ 行,每行包含一个数字 $A_i$ 表示第 $i$ 个密码的强度。
说明/提示
### 评测用例规模与约定
- 对于 $80\%$ 的评测用例,$T = 1$;
- 对于所有评测用例,$1 \leq T \leq 10^5$,$1 \leq |S_i| \leq 32$,其中 $|S_i|$ 表示 $S_i$ 的长度。