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$ 的长度。