#YHJH20250601. 保护隐私(password)

保护隐私(password)

题目描述

Rubyonly 需要保护他的隐私,所以他设置了很多密码,不同密码的强度也不同。

Rubyonly 认为,一个只包含大写字母、小写字母、数字、特殊字符且长度不大于 16 的密码的强度级数等于这个密码满足的下面的条件的数量:

· 包含特殊字符。 · 包含大于等于 2 个不相同的大写字母。 · 包含大于等于 2 个不相同的小写字母。 · 包含大于等于 3 个不相同的数字。 · 长度不小于 8。

其中,特殊字符为 ASCII 值不小于 33 且不大于 126,同时不为大写字母、小写 字母、数字的字符。

你可以使用提示里的程序生成一份 ASCII 码对照表。

现在给定你一个密码 � 和它的长度 �,你需要输出它的强度级数。

格式要求

输入格式

从文件 password.in 中读入数据。 输入一共 2 行。 第 1 行一个整数 n。 第 2 行一个长度为 n 且只包含大写字母、小写字母、数字、特殊字符的字符串 s。

输出格式

输出到文件 password.out 中。 输出一个整数,表示密码 s 的强度级数。

样例

6 
B45E6A
2
7 
ssskc04
1
11 
cnVzMmtmeGQ
3
9 
mx@CFZ123
5

限制要求

1s, 256MiB for each test case.

提示

使用下面这份程序可以生成一份 ASCII 码对照表。

请注意,这份程序只会生成 ASCII 码对照表中 ASCII 值不小于 33 且不大于 126 的部分。

#include <bits/stdc++.h> 
using namespace std; 
int main(){ 
    int cnt=0; 
    for(int i=33;i<=126;i++){ 
        printf("%3d: %c",i,i); 
        if(++cnt!=5) printf(" "); 
        else printf("\n"),cnt=0; 
    } 
    printf("\n"); 
    return 0; 
}