비밀번호

2825 단어 cHDU
비밀 번호
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 30440    Accepted Submission(s): 12254
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<cstdio>
#include<cstring> 
int a,b,c,d,i,c1;
int isA(char c1)
{
    if(c1>='A'&&c1<='Z')
    {
        a=1;
        return 1;
    }
    return 0;    
}
int isa(char c1)
{
    if(c1>='a'&&c1<='z')
    {
        b=1;
        return 1;
    }
    return 0;
}
int is0(char c1)
{
    if(c1>='0'&&c1<='9')
    {
        c=1;
        return 1;
    }
    return 0;
}
int isf(char c1)
{
    if(c1=='~'||c1=='!'||c1=='@'||c1=='#'||c1=='$'||c1=='%'||c1=='^')
    {
        d=1;
        return 1;
    }
    return 0;
} 
int j1(char c1)
{
    if( isA(c1)||isa(c1)||is0(c1)||isf(c1) )
        return 1;
    return 0;
}
int j2(char *s)
{
    int t,k,len = strlen(s);
    for(i=0,a=b=c=d=t=k=0; i<len; i++)
    {
        if(j1(s[i]))
        {
            t++;
        }
    }
    k = a+b+c+d;
    if(t==len&&len>=8&&len<=16&&k>=3)
         return 1;
    return 0;
}
                          
int main()
{
    int m;
    char s[55];
    scanf("%d",&m);
    getchar(); 
    while(m--)
    {
        gets(s);
        if(j2(s))
        printf("YES
"); else printf("NO
"); } return 0; }

좋은 웹페이지 즐겨찾기