HDU 2043
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2043
代码如下:
1 #include <cstdio> 2 #include <cstring> 3 using namespace std; 4 5 int main() 6 { 7 int a[4]; 8 char s[51]; 9 int t, flag; 10 while(scanf("%d", &t) != EOF) 11 { 12 for(int i = 0; i < t; i++) 13 { 14 memset(a, 0, sizeof(a)); 15 scanf("%s", s); 16 int len = strlen(s); 17 flag = 0; 18 if(len < 8 || len > 16) 19 { 20 flag = 1; 21 } 22 for(int j = 0; j < len; j++) 23 { 24 if('a' <= s[j] && s[j] <= 'z') 25 { 26 if(!a[0]) 27 { 28 a[0] = 1; 29 } 30 } 31 else if('A' <= s[j] && s[j] <= 'Z') 32 { 33 if(!a[1]) 34 { 35 a[1] = 1; 36 } 37 } 38 else if('0' <= s[j] && s[j] <= '9') 39 { 40 if(!a[2]) 41 { 42 a[2] = 1; 43 } 44 } 45 else 46 { 47 switch(s[j]) 48 { 49 case '^': 50 case '~': 51 case '@': 52 case '!': 53 case '%': 54 case '$': 55 case '#': 56 a[3] = 1; 57 break; 58 default: flag = 1; 59 } 60 } 61 } 62 int sum = 0; 63 for(int i = 0; i < 4; i++) 64 { 65 sum += a[i]; 66 } 67 if(flag) 68 { 69 printf("NO\n"); 70 } 71 else if(sum >= 3) 72 { 73 printf("YES\n"); 74 } 75 else 76 { 77 printf("NO\n"); 78 } 79 } 80 } 81 return 0; 82 }