首页 > 代码库 > hdu_2043_水题
hdu_2043_水题
密码
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 28587 Accepted Submission(s): 11412
Problem Description
网上流传一句话:"常在网上飘啊,哪能不挨刀啊~"。其实要想能安安心心地上网其实也不难,学点安全知识就可以。
首先,我们就要设置一个安全的密码。那什么样的密码才叫安全的呢?一般来说一个比较安全的密码至少应该满足下面两个条件:
(1).密码长度大于等于8,且不要超过16。
(2).密码中的字符应该来自下面“字符类别”中四组中的至少三组。
这四个字符类别分别为:
1.大写字母:A,B,C...Z;
2.小写字母:a,b,c...z;
3.数字:0,1,2...9;
4.特殊符号:~,!,@,#,$,%,^;
给你一个密码,你的任务就是判断它是不是一个安全的密码。
Input
输入数据第一行包含一个数M,接下有M行,每行一个密码(长度最大可能为50),密码仅包括上面的四类字符。
Output
对于每个测试实例,判断这个密码是不是一个安全的密码,是的话输出YES,否则输出NO。
Sample Input
3 a1b2c3d4 Linle@ACM ^~^@^@!%
Sample Output
NO YES NO
这道题很简单,但是我wa了好几次,原因在于getchar不能乱用,再次不解释~~~
我自己的AC代码,很麻烦的样子:
1 #include <cstdio> 2 #include <string.h> 3 4 using namespace std; 5 6 int main() 7 { 8 int M; 9 int len; 10 char a[55]; 11 12 scanf("%d", &M); 13 while(M--) { 14 int flag = 1; 15 int fir = 0, sec = 0, thi = 0, fou = 0; 16 17 scanf("%s", a); 18 len = strlen(a); 19 if(len < 8 || len > 16) 20 flag = 0; 21 else { 22 int judge = 0; 23 for(int i = 0; i < len; i++) { 24 if(a[i] >= ‘A‘ && a[i] <= ‘Z‘) { 25 fir = 1; 26 judge = 1; 27 } 28 if(a[i] >= ‘a‘ && a[i] <= ‘z‘) { 29 sec = 1; 30 judge = 1; 31 } 32 if(a[i] >= ‘0‘ && a[i] <= ‘9‘) { 33 thi = 1; 34 judge = 1; 35 } 36 if(a[i] == ‘~‘ || a[i] == ‘!‘ || a[i] == ‘@‘ || a[i] == ‘#‘ || a[i] == ‘$‘ || a[i] == ‘%‘ || a[i] == ‘^‘) { 37 fou = 1; 38 judge = 1; 39 } 40 if(judge == 0) 41 flag = 0; 42 } 43 } 44 if(flag*(fir*sec*thi || fir*sec*fou || fir*thi*fou || sec*thi*fou)) 45 printf("YES\n"); 46 else 47 printf("NO\n"); 48 } 49 return 0; 50 }
借鉴别人的,很简洁,很有yiyi的风范,continue:
1 #include <cstdio> 2 #include <string.h> 3 4 using namespace std; 5 6 int main() 7 { 8 int M; 9 int len; 10 char a[55]; 11 12 scanf("%d", &M); 13 while(M--) { 14 int fir = 0, sec = 0, thi = 0, fou = 0; 15 16 scanf("%s", a); 17 len = strlen(a); 18 if(len < 8 || len > 16) { 19 printf("NO\n"); 20 continue; 21 } 22 for(int i = 0; i < len; i++) { 23 if(a[i] >= ‘A‘ && a[i] <= ‘Z‘) { 24 fir = 1; 25 } 26 if(a[i] >= ‘a‘ && a[i] <= ‘z‘) { 27 sec = 1; 28 } 29 if(a[i] >= ‘0‘ && a[i] <= ‘9‘) { 30 thi = 1; 31 } 32 if(a[i] == ‘~‘ || a[i] == ‘!‘ || a[i] == ‘@‘ || a[i] == ‘#‘ || a[i] == ‘$‘ || a[i] == ‘%‘ || a[i] == ‘^‘) { 33 fou = 1; 34 } 35 } 36 if(fir+sec+thi+fou > 2) 37 printf("YES\n"); 38 else 39 printf("NO\n"); 40 } 41 return 0; 42 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。