城市黎明的灯火,总有光环在陨落,模仿者一个又一个,无人问津的角色,你选择去崇拜谁呢,怨恨谁呢?
题目描述
密码被盗是常有的事,要防止密码被盗,就要设置一个安全的密码。那什么样的密码才叫安全的呢?一般来说一个比较安全的密码应该至少满足下面两个条件:
(1). 密码长度大于等于8;
(2). 密码中的字符应该包括下面四类字符中的至少三种:
① 大写字母:A,B,C...Z;
② 小写字母:a,b,c...z;
③ 数字:0,1,2...9;
④ 特殊符号:~,!,@,#,$,%,^;
给你一个密码,你的任务就是判断它是不是一个安全的密码。
输入
第一行为一个整数M,接下有M行,每行为一个密码串(长度小于20),密码串中仅包含上面的四类字符。
输出
判断每个密码是不是一个安全的密码,是的话输出YES,否则输出NO
样例输入
复制样例数据
3 happy1999 Hello@UPC AB$%8ok
样例输出
NO YES NO
#include <iostream> #include <cstdio> #include <algorithm> #include <string> #include <cstring> #include <cstdlib> #include <cmath> #include <stack> #include <queue> #include <set> #include <map> #include <vector> #include <ctime> #include <cctype> #include <bitset> #include <utility> #include <sstream> #include <complex> #include <iomanip> #define inf 0x3f3f3f3f typedef long long ll; using namespace std; char s[100]; int ct[5],jg,M,fg; int main() { scanf("%d",&M); getchar(); while(M--) { fg=0,jg=0; memset(ct,0,sizeof(ct)); scanf("%s",s); // cout<<s<<endl; int cd=strlen(s); if(cd<8) cout<<"NO"<<endl; else { for(int i=0; i<cd; i++) { if(s[i]>='A'&&s[i]<='Z') fg=1; else if(s[i]>='a'&&s[i]<='z') fg=2; else if(s[i]>='0'&&s[i]<='9') fg=3; else// if(s[i]=='~'||s[i]=='!'||s[i]=='@'||s[i]=='#'||s[i]=='$'||s[i]=='%'||s[i]=='^') fg=4; ct[fg]++; } for(int i=1; i<=4; i++) { if(ct[i]!=0) jg++; } if(jg>=3) cout<<"YES"<<endl; else cout<<"NO"<<endl; } } return 0; }
一道被坑了几遍的题,错误点在数据类型上,不能定义为string类型,可能是编译环境的问题,反正在石油大学是通不过,可能其他地方能通过,俺也不知道。
1943: 密码判断
最新推荐文章于 2023-07-18 19:49:42 发布