zoukankan      html  css  js  c++  java
  • (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
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    Android简介(8H)思维导图
    Android章节练习题及答案
    付费方式选择——选项菜单的创建和使用
    Android——选项菜单的实现
    思维导图——四级词汇2
    jquery:为动态加载的元素绑定事件
    tcp/ip协议详解
    Atom实用插件
    如何让textarea不可拖拽
    移动端网站中手机号唤起拨号界面
  • 原文地址:https://www.cnblogs.com/xueda120/p/3093271.html
Copyright © 2011-2022 走看看