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 [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 }

hdu_2043_水题,布布扣,bubuko.com

时间: 2024-10-05 04:43:21

hdu_2043_水题的相关文章

2015南阳CCPC L - Huatuo&#39;s Medicine 水题

L - Huatuo's Medicine Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 无 Description Huatuo was a famous doctor. He use identical bottles to carry the medicine. There are different types of medicine. Huatuo put medicines into the bottles and chain these b

sdut 2841 Bit Problem (水题)

题目 贴这个题是因为看题解有更简单的方法, 我做的时候是直接算的, 也很简单. 贴一下题解吧: 如果一个整数不等于 0,那么该整数的二进制表示中至少有一位是 1. 这个题结果可以直接输出 x - (x&(x-1)); 因为x-1 之后二进制下,就是最右边的1变成了0, 最右边的1的 右边所有的0变成了1, 不影响最左边. 我的代码: 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4

sdut 2413:n a^o7 !(第三届山东省省赛原题,水题,字符串处理)

n a^o7 ! Time Limit: 1000MS Memory limit: 65536K 题目描述 All brave and intelligent fighters, next you will step into a distinctive battleground which is full of sweet and happiness. If you want to win the battle, you must do warm-up according to my inst

杭电(hdu)2053 Switch Game 水题

Switch Game Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 13113    Accepted Submission(s): 7970 Problem Description There are many lamps in a line. All of them are off at first. A series of o

4.7-4.9补题+水题+高维前缀和

题目链接:51nod 1718 Cos的多项式  [数学] 题解: 2cosx=2cosx 2cos2x=(2cosx)^2-2 2cos3x=(2cosx)^3-3*(2cosx) 数归证明2cos(nx)能表示成关于2cosx的多项式,设为f(n) f(1)=x,f(2)=x^2-2(其中的x就是2cosx) 假设n=1~k时均成立(k>=3) 当n=k+1时 由cos((k+1)x)=cos(kx)cos(x)-sin(kx)sin(x) cos((k-1)x)=cos(kx)cos(x)

历年NOIP水题泛做

快noip了就乱做一下历年的noip题目咯.. noip2014 飞扬的小鸟 其实这道题并不是很难,但是就有点难搞 听说男神错了一个小时.. 就是$f_{i,j}$表示在第$i$个位置高度为$j$的时候最小点击次数 递推的话对于上升的情况只做一次,后面几次在后面再做.. #include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> using namespace st

[ZPG TEST 114] 阿狸的英文名【水题】

1.      阿狸的英文名 阿狸最近想起一个英文名,于是他在网上查了很多个名字.他发现一些名字可以由两个不同的名字各取一部分得来,例如John(约翰)的前缀 "John"和Robinson(鲁滨逊)的后缀 "son" 连在一起就是Johnson. 现在他找到了两个喜欢的名字(名字可看作字符串),用A和B表示,他想知道取A的一个非空前缀和B的一个非空后缀,连接在一起能组成多少不同的字符串. 输入格式 输入两行,分别表示字符串A和B:字符串只包含小写英文字母. 输出格

G - Brain Network (easy)(并查集水题)

G - Brain Network (easy) Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u CodeForces 690C1 Description One particularly well-known fact about zombies is that they move and think terribly slowly. While we still don't know

UVaLive 6591 &amp;&amp; Gym 100299L Bus (水题)

题意:略. 析:不解释,水题. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <string> #include <cstdlib> #include <cmath> #include <iostream> #include <cstring> #include <set>