暑期二 (C)(hdu2043)
2016-06-27 11:09
239 查看
原题
密码
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 46458 Accepted Submission(s): 18717
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
题意:判断输入字符串是否符合要求。
思路:注意字符串的输入。对每个字符判断并标记。
代码
#include<stdio.h> #include<string.h> int main(){ int N,s,len,b,c,d,e; char a[55]; scanf("%d",&N); while (N--){ scanf(" %s",a); len=strlen(a); if (len<8||len>16){ printf("NO\n"); continue; } b=c=d=e=0; for (int i=0;i<len;i++){ if (a[i]>='A'&&a[i]<='Z') e=1; if (a[i]>='a'&&a[i]<='z') b=1; if (a[i]>='0'&&a[i]<='9')//0,9记得加'' c=1; if (a[i]=='~'||a[i]=='!'||a[i]=='@'||a[i]=='#'||a[i]=='$'||a[i]=='%'||a[i]=='^') d=1; } if (b+c+d+e>=3){ printf("YES\n"); } else{ printf("NO\n"); } } return 0; }
相关文章推荐
- mysql多表count累计
- HDFS运行原理(上传文件 集群)
- Linux 中 Oracle dmp 文件导入导出
- 商品图片放大镜
- 各类 HTTP 返回状态代码详解
- 分布式查找过程[HBase]Region location
- 字符串相似度
- gradle打包简介
- 设备的 MAC 地址与预想的不符
- An error occurred while automatically activating bundle com.android.ide.eclipse.adt(259).
- 使用jquery实现的按需加载
- js算法:heap sort 使用堆排序
- 使用 document.onreadystatechange()来判断页面加载完
- mysql 主从复制问题'the master returned an invalid number of fields for SHOW SLAVE HOSTS'
- 一个可以捕获程序崩溃个 然后可以保存本地的方法
- ant编译java 和eclipse编译的差别
- 黑马程序员-JAVA基础面试-获取10个1-20 的随机数,要求获取的随机数不能相同!
- Linux学习-VIM操作
- linux内核函数 ioremap()的原理及意义
- 二级列表