パスワードHDU 2043
パスワード
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 35961 Accepted Submission(s): 14385
Problem Description
ネット上には「よくネット上を漂っているのに、刀を打たれないわけにはいかないよ~」という言葉が流れている.実は安心してインターネットを利用できるようにするのは難しくないので、安全の知識を勉強すればいいです.
まず、安全なパスワードを設定します.では、どのようなパスワードが安全ですか?一般的に、より安全なパスワードは、少なくとも次の2つの条件を満たす必要があります.
(1).パスワードの長さが8以上で、16を超えないでください.
(2).パスワードの文字は、以下の「文字カテゴリ」の4つのグループの少なくとも3つのグループから来るべきである.
この4つの文字カテゴリは、次のとおりです.
1.大文字:A,B,C…Z;
2.小文字:a,b,c...z;
3.数字:0,1,2...9;
4.特殊符号:~,!,@,#,$,%,^;
パスワードをあげます.あなたの任務は安全なパスワードかどうかを判断することです.
Input
入力データの最初の行は1つの数Mを含んで、次はM行があって、1行ごとに1つのパスワード(長さは最大50かもしれません)で、パスワードは上の4種類の文字だけを含みます.
Output
各テスト例について、このパスワードが安全なパスワードであるか否かを判断し、そうであればYESを出力し、そうでなければNOを出力する.
Sample Input
Sample Output
Author
linle
WA N回は関数にelseが入っていないという状況だったのに、へえ、私の頭の中がバカだったんだ....
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 35961 Accepted Submission(s): 14385
Problem Description
ネット上には「よくネット上を漂っているのに、刀を打たれないわけにはいかないよ~」という言葉が流れている.実は安心してインターネットを利用できるようにするのは難しくないので、安全の知識を勉強すればいいです.
まず、安全なパスワードを設定します.では、どのようなパスワードが安全ですか?一般的に、より安全なパスワードは、少なくとも次の2つの条件を満たす必要があります.
(1).パスワードの長さが8以上で、16を超えないでください.
(2).パスワードの文字は、以下の「文字カテゴリ」の4つのグループの少なくとも3つのグループから来るべきである.
この4つの文字カテゴリは、次のとおりです.
1.大文字:A,B,C…Z;
2.小文字:a,b,c...z;
3.数字:0,1,2...9;
4.特殊符号:~,!,@,#,$,%,^;
パスワードをあげます.あなたの任務は安全なパスワードかどうかを判断することです.
Input
入力データの最初の行は1つの数Mを含んで、次はM行があって、1行ごとに1つのパスワード(長さは最大50かもしれません)で、パスワードは上の4種類の文字だけを含みます.
Output
各テスト例について、このパスワードが安全なパスワードであるか否かを判断し、そうであればYESを出力し、そうでなければNOを出力する.
Sample Input
3
a1b2c3d4
Linle@ACM
^~^@^@!%
Sample Output
NO
YES
NO
Author
linle
WA N回は関数にelseが入っていないという状況だったのに、へえ、私の頭の中がバカだったんだ....
#include <iostream>
#include <cstring>
using namespace std;
bool judge(char *st,int len)
{
int i,a1 = 0,a2 = 0,a3 = 0,a4 = 0;
for(i = 0; i < len ; i++)
if(st[i] >='a' && st[i] <= 'z')
{
a1 =1;
}
else if(st[i] >= '0' && st[i] <='9' )
{
a2 = 1;
}
else if(st[i] >= 'A' && st[i] <='Z' )
{
a3 = 1;
}
else if((st[i] == '~' || st[i] == '!' || st[i] == '@' ||st[i] == '#' || st[i] == '$' || st[i] == '%' || st[i] == '^'))
{
a4 = 1;
}
else return false;
if(a1 + a2 + a3 + a4 >=3) return true;
else return false;
}
int main()
{
int M,i,j,len;
char st[51] ="\0";
cin >> M;
while(M--)
{
cin >> st;
len = strlen(st);
if(len < 8 || len > 16) cout << "NO" << endl;
else
{
if(judge(st,len)) cout << "YES"<<endl;
else cout << "NO"<<endl;
}
}
return 0;
}