• (TOJ1395)密码


    描述

    网上流传一句话:"常在网上飘啊,哪能不挨刀啊~"。其实要想能安安心心地上网其实也不难,学点安全知识就可以。
    首先,我们就要设置一个安全的密码。那什么样的密码才叫安全的呢?一般来说一个比较安全的密码至少应该满足下面两个条件:
    (1).密码长度大于等于8,且不要超过16。 (2).密码中的字符应该来自下面“字符类别”中四组中的至少三组。
    这四个字符类别分别为: 1.大写字母:A,B,C...Z; 2.小写字母:a,b,c...z; 3.数字:0,1,2...9; 4.特殊符号:~,!,@,#,$,%,^;
    给你一个密码,你的任务就是判断它是不是一个安全的密码。

    输入

    输入数据第一行包含一个数M,接下有M行,每行一个密码(长度最大可能为50),密码仅包括上面的四类字符。

    输出

    对于每个测试实例,判断这个密码是不是一个安全的密码,是的话输出YES,否则输出NO。

    样例输入

    3
    a1b2c3d4
    Linle@ACM
    ^~^@^@!%

    样例输出

    NO
    YES
    NO
     1 #include <stdio.h>
     2 #include <math.h>
     3 #include <ctype.h>
     4 #include <string.h>
     5 
     6 char a[52];
     7 
     8 int deal(char *s){
     9   int i,L,s1,s2,s3,s4,flag;
    10     L=strlen(s);
    11     s1=s2=s3=s4=0;
    12     if(L<8 || L>16){
    13         return 0;
    14     }
    15     for(i=0; i<L; i++)
    16     {
    17         if(isalpha(s[i])){
    18             if(isupper(s[i]))  
    19                s1++;
    20             else s2++;
    21         }
    22         else if(isdigit(s[i])){
    23             s3++;
    24         } 
    25         else if(s[i]=='~'||s[i]=='!'||s[i]=='@'
    26              ||s[i]=='#'||s[i]=='$'||s[i]=='%'||s[i]=='^'){
    27                  s4++;
    28              }  
    29     else{
    30         flag=0; break;
    31     }
    32     } 
    33     if(s1>0) s1=1;
    34     if(s2>0) s2=1;
    35     if(s3>0) s3=1;
    36     if(s4>0) s4=1;
    37     if(s1+s2+s3+s4>=3) return 1;
    38     else return 0;
    39 }
    40 
    41 void solve(){
    42   int n;
    43     scanf("%d",&n);
    44     getchar();
    45     while(n--){
    46         gets(a);
    47         if(deal(a)) printf("YES\n");
    48         else printf("NO\n");
    49     }    
    50 }
    51 
    52 int main(){
    53     solve();
    54     return 0;
    55 } 
     
    作者:xueda120
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    LogMiner日志分析工具的使用
    V$SQL%知多少之二(V$SQL_PLAN)
    k8s中prometheus监控k8s外mysql
    mysql5.7下载
    【整理】Linux:set eux
    简单快速使用阿里云镜像仓库
    skywalking安装及使用(非容器版)
    建库、建表、造数据(微服务实战项目部分示例)
    常用环境变量配置(vim /etc/profile)
    Docker 容器默认root账号运行,很不安全!
  • 原文地址:https://www.cnblogs.com/xueda120/p/3093271.html
Copyright © 2020-2023  润新知