密码
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 [email protected]
^~^@^@!%
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 }
时间: 2024-10-05 04:43:21