题目简介:
网上流传一句话:"常在网上飘啊,哪能不挨刀啊~"。其实要想能安安心心地上网其实也不难,学点安全知识就可以。
首先,我们就要设置一个安全的密码。那什么样的密码才叫安全的呢?一般来说一个比较安全的密码至少应该满足下面两个条件:(1).密码长度大于等于8,且不要超过16。
(2).密码中的字符应该来自下面“字符类别”中四组中的至少三组。
(3).密码中不能出现连续重复的字符或字符串。
这四个字符类别分别为:1.大写字母:A,B,C...Z;
2.小写字母:a,b,c...z;
3.数字:0,1,2...9;
4.特殊符号:~,!,@,#,$,%,^;
给你一个密码,你的任务就是判断它是不是一个安全的密码。
4 a1b2c3d4 Linle@ACM ^~^@^@!%Abc1Abc1
YESYESNOYES
题目代码:
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
int test;
char b[5];
char a[52];
int i,j,k,t;
int flag[4];
while(cin>>test)
{
gets(b);
int count;
while(test--)
{
count=0;
for(i=0;i<4;i++)
flag[i]=0;
gets(a);
int len=strlen(a);
if(len<8||len>16) count++;
for(i=0;i<len;i++)
if(a[i]>='0'&&a[i]<='9') flag[0]=1;
else if(a[i]>='A'&&a[i]<='Z') flag[1]=1;
else if(a[i]>='a'&&a[i]<='z') flag[2]=1;
else if(a[i]=='~'||a[i]=='!'||a[i]=='@'||a[i]=='#'||a[i]=='$'||a[i]=='%'||a[i]=='^') flag[3]=1;
int sum=0;
for(i=0;i<4;i++)
sum+=flag[i];
if(sum<3) count++;
if(count==2)
{
cout<<"NO"<<endl;
continue;
}
if(count==0)
{
cout<<"YES"<<endl;
continue;
}
int sign=0;
for(i=0;i<len-1&&count<2;i++)
for(j=i+1;j<len;j++)
if(a[i]==a[j])
{
if(i==j-1)
{
count++;
break;
}
else
{
k=i;
t=j;
int flag1=0;
while(k<j)
{
if(a[k++]!=a[t++])
{
flag1=1;
break;
}
}
if(flag1==0)
{
count++;
break;
}
}
}
if(count==2)cout<<"NO"<<endl;
else cout<<"YES"<<endl;
}
}
}