当前位置: 首页 > news >正文

CCF CSP题解:密码(key)(202409-1)

题目和思路

题目背景

西西艾弗网对用户密码有一套安全级别评定标准。

题目描述

在西西艾弗网上,用户的密码是一个由大写字母(A‐Z)、小写字母(a‐z)、数字(0‐9)和特殊字符(*#)共 64 种字符组成的字符串。根据复杂程度不同,密码安全度被分为高、中、低三档。

  • 高:由上述 64 种字符组成,长度大于等于 6 个字符,包含字母、数字和特殊字符,同一个字符出现不超过 2 次;
  • 中:由上述 64 种字符组成,长度大于等于 6 个字符,包含字母、数字和特殊字符,且未达到高安全度要求;
  • 低:由上述 64 种字符组成,长度大于等于 6 个字符,且未达到中安全度要求;
    小 P 为自己准备了 n n n 个候选密码,试编写程序帮小 P 自动判别每个密码的安全级别。保证这 n n n 个密码都至少满足低安全度要求,当安全度为高、中、低时分别输出 210 即可。

输入格式

从标准输入读入数据。
输入共 n + 1 n + 1 n+1 行。
第一行包含一个正整数 n n n,表示待判别的密码个数;
接下来 n n n 行,每行一个字符串,表示一个安全度至少为低的候选密码。

输出格式

输出到标准输出。
输出共 n n n 行,每行输出一个整数 210,表示对应密码的安全度。

样例输入

4
csp#ccsp
csp#ccsp2024
Csp#ccsp2024
CSP#2024

样例输出

0
1
2
2

样例解释

第一个密码不含数字,安全度为低;
第二个密码中小写字母 c 出现 3 次,安全度为中;
和第二个密码相比,第三个密码把一个小写字母 c 变为了大写,满足了高安全度要求;
第四个密码同样满足高安全度要求。

子任务

全部的测试数据满足 n ≤ 100 n \le 100 n100,且输入的每个字符串均不超过 20 个字符。

题解

只是基础题,一个复杂度为 O ( n ) O(n) O(n)的算法即可满分通过。

AC代码

#include <iostream>
#include <unordered_map>
using namespace std;int  main() {int n;cin >> n;while (n--) {string s;int level = 0;bool hasDigit = 0, hasTeshu = 0, hasAlpha = 0;bool isRepeated = 0;unordered_map<char,int>myset;cin >> s;for (const auto& ch : s) {myset[ch]++;if (myset[ch] > 2)isRepeated = 1;if (isalpha(ch))hasAlpha = 1;else if (isdigit(ch)) hasDigit = 1;else hasTeshu = 1;}if (hasAlpha && hasDigit && hasTeshu && !isRepeated)cout << 2 << endl;else if (hasAlpha && hasDigit && hasTeshu)cout << 1 << endl;else cout << 0 << endl;}return 0;
}
http://www.lryc.cn/news/443875.html

相关文章:

  • RuntimeError: Maximum Recursion Depth Exceeded - 递归深度超限的完美解决方案
  • Linux1-ls,cd,pwd
  • 【高级编程】XML DOM4J解析XML文件(含案例)
  • 查看VSFTPD配置的服务器路径和linux系统有哪些用户
  • JavaEE: 创造无限连接——网络编程中的套接字
  • 记K8s组件harbor和kuboard故障恢复
  • c++ return {};
  • 【设计模式-适配】
  • 深度学习02-pytorch-08-自动微分模块
  • 使用Python实现深度学习模型:智能宠物监控与管理
  • 【HTTPS】对称加密和非对称加密
  • MySQL中的LIMIT与ORDER BY关键字详解
  • Java 编码系列:集合框架(List、Set、Map 及其常用实现类)
  • Go进阶概览 -【7.2 泛型的使用与实现分析】
  • 罗德岛战记游戏源码(客户端+服务端+数据库+全套源码)游戏大小9.41G
  • AI+教育|拥抱AI智能科技,让课堂更生动高效
  • WebServer
  • java项目之基于spring boot的多维分类的知识管理系统的设计与实现源码
  • go的结构体、方法、接口
  • 力扣第一题——删除有序数组中的重复项
  • Tuxera NTFS for Mac 2023绿色版
  • LeetCode[中等] 155. 最小栈
  • Python青少年简明教程目录
  • Revit学习记录-版本2018【持续补充】
  • 深度学习01-概述
  • leetcode232. 用栈实现队列
  • 智慧火灾应急救援航拍检测数据集(无人机视角)
  • eureka.client.service-url.defaultZone的坑
  • 统信服务器操作系统【d版字符系统升级到dde图形化】配置方法
  • 学习IEC 62055付费系统标准