哥们,确定不用 STL 吗
by Dws_t7760 @ 2023-10-20 09:17:08
@[t7760](/user/776962) 这个怎么写
by x1489631649 @ 2023-10-20 09:18:59
@[x1489631649](/user/780505) 你或许可以用一下 map 和 sscanf
当然你如果想用哈希代替 map 也没问题(
by Dws_t7760 @ 2023-10-20 09:21:36
sscanf是什么 @[t7760](/user/776962)
by x1489631649 @ 2023-10-20 09:22:52
@[t7760](/user/776962) 如果都不会呢
by x1489631649 @ 2023-10-20 09:23:20
@[x1489631649](/user/780505) 不可以捏,总司令
by Dws_t7760 @ 2023-10-20 09:24:29
@[t7760](/user/776962) 活跃了,我会改了正在调
by x1489631649 @ 2023-10-20 09:31:01
@[t7760](/user/776962) 现在65了
```
#include<bits/stdc++.h>
using namespace std;
int k[1005],l[1005],m[1005],n[1005],o[1005],flag2[1005];
int main()
{
// freopen("network.in","r",stdin);
// freopen("network.out","w",stdout);
string ch1,ch2;
char f,g,h,j;
int s=0,t;
cin>>t;
for(int i=1;i<=t;i++)
{
int a=0,b=0,c=0,d=0,e=0,flag3=0,flag=1;
cin>>ch1>>ch2;
if(ch2[0]==48&&ch2[1]!='.') flag3=1;
for(int p=0;p<ch2.size();p++)
{
if(ch2[p]=='.'||ch2[p]==':')
{
if(flag==1)
f=ch2[p];
if(flag==2)
g=ch2[p];
if(flag==3)
h=ch2[p];
if(flag==4)
j=ch2[p];
flag++;
}
if((ch2[p]==48&&ch2[p-1]=='.'&&ch2[p+1]!='.'&&ch2[p+1]!=':')||(ch2[p]==48&&ch2[p-1]==':'))
flag3=1;
if(ch2[p]==48)
{
if(flag==1) a=a*10;
if(flag==2) b=b*10;
if(flag==3) c=c*10;
if(flag==4) d=d*10;
if(flag==5) e=e*10;
}
if(ch2[p]==49)
{
if(flag==1) a=a*10+1;
if(flag==2) b=b*10+1;
if(flag==3) c=c*10+1;
if(flag==4) d=d*10+1;
if(flag==5) e=e*10+1;
}
if(ch2[p]==50)
{
if(flag==1) a=a*10+2;
if(flag==2) b=b*10+2;
if(flag==3) c=c*10+2;
if(flag==4) d=d*10+2;
if(flag==5) e=e*10+2;
}
if(ch2[p]==51)
{
if(flag==1) a=a*10+3;
if(flag==2) b=b*10+3;
if(flag==3) c=c*10+3;
if(flag==4) d=d*10+3;
if(flag==5) e=e*10+3;
}
if(ch2[p]==52)
{
if(flag==1) a=a*10+4;
if(flag==2) b=b*10+4;
if(flag==3) c=c*10+4;
if(flag==4) d=d*10+4;
if(flag==5) e=e*10+4;
}
if(ch2[p]==53)
{
if(flag==1) a=a*10+5;
if(flag==2) b=b*10+5;
if(flag==3) c=c*10+5;
if(flag==4) d=d*10+5;
if(flag==5) e=e*10+5;
}
if(ch2[p]==54)
{
if(flag==1) a=a*10+6;
if(flag==2) b=b*10+6;
if(flag==3) c=c*10+6;
if(flag==4) d=d*10+6;
if(flag==5) e=e*10+6;
}
if(ch2[p]==55)
{
if(flag==1) a=a*10+7;
if(flag==2) b=b*10+7;
if(flag==3) c=c*10+7;
if(flag==4) d=d*10+7;
if(flag==5) e=e*10+7;
}
if(ch2[p]==56)
{
if(flag==1) a=a*10+8;
if(flag==2) b=b*10+8;
if(flag==3) c=c*10+8;
if(flag==4) d=d*10+8;
if(flag==5) e=e*10+8;
}
if(ch2[p]==57)
{
if(flag==1) a=a*10+9;
if(flag==2) b=b*10+9;
if(flag==3) c=c*10+9;
if(flag==4) d=d*10+9;
if(flag==5) e=e*10+9;
}
}
if(a>255||b>255||c>255||d>255||e>65535||f!='.'||g!='.'||h!='.'||j!=':'||flag>5)
flag3=1;
if(flag3!=1)
{
if(ch1=="Server")
{
int flag1=0;
for(int p=1;p<=s;p++)
{
if(a==k[p]&&b==l[p]&&c==m[p]&&d==n[p]&&e==o[p])
{
cout<<"FAIL"<<endl;
flag1=1;
}
}
if(flag1==0)
{
cout<<"OK"<<endl;
s++;
k[s]=a,l[s]=b,m[s]=c,n[s]=d,o[s]=e,flag2[s]=i;
}
}
else{
int flag1=0;
for(int p=1;p<=s;p++)
{
if(a==k[p]&&b==l[p]&&c==m[p]&&d==n[p]&&e==o[p])
{
cout<<flag2[p]<<endl;
flag1=1;
}
}
if(flag1==0) cout<<"FAIL"<<endl;
}
}
else cout<<"ERR"<<endl;
}
return 0;
}//Client 63.81.148.0:28810 Client 217.0.167.240:30040
```
by x1489631649 @ 2023-10-20 09:54:24
@[x1489631649](/user/780505)
修改了,具体见注释
```cpp
#include<bits/stdc++.h>
using namespace std;
long long k[1005],l[1005],m[1005],n[1005],o[1005],flag2[1005];
int main()
{
// freopen("network.in","r",stdin);
// freopen("network.out","w",stdout);
string ch1,ch2;
char f,g,h,j;
long long s=0,t;
cin>>t;
for(long long i=1;i<=t;i++)
{
long long a=0,b=0,c=0,d=0,e=0,flag3=0,flag=1;
cin>>ch1>>ch2;
// if(ch2[0]==48&&ch2[1]!='.') flag3=1;
// for(long long p=0;p<ch2.size();p++)
// {
// if(ch2[p]=='.'||ch2[p]==':')
// {
// if(flag==1)
// f=ch2[p];
// if(flag==2)
// g=ch2[p];
// if(flag==3)
// h=ch2[p];
// if(flag==4)
// j=ch2[p];
// flag++;
// }
// if((ch2[p]==48&&ch2[p-1]=='.'&&ch2[p+1]!='.'&&ch2[p+1]!=':')||(ch2[p]==48&&ch2[p-1]==':'))
// flag3=1;
// if(ch2[p]==48)
// {
// if(flag==1) a=a*10;
// if(flag==2) b=b*10;
// if(flag==3) c=c*10;
// if(flag==4) d=d*10;
// if(flag==5) e=e*10;
// }
// if(ch2[p]==49)
// {
// if(flag==1) a=a*10+1;
// if(flag==2) b=b*10+1;
// if(flag==3) c=c*10+1;
// if(flag==4) d=d*10+1;
// if(flag==5) e=e*10+1;
// }
// if(ch2[p]==50)
// {
// if(flag==1) a=a*10+2;
// if(flag==2) b=b*10+2;
// if(flag==3) c=c*10+2;
// if(flag==4) d=d*10+2;
// if(flag==5) e=e*10+2;
// }
// if(ch2[p]==51)
// {
// if(flag==1) a=a*10+3;
// if(flag==2) b=b*10+3;
// if(flag==3) c=c*10+3;
// if(flag==4) d=d*10+3;
// if(flag==5) e=e*10+3;
// }
// if(ch2[p]==52)
// {
// if(flag==1) a=a*10+4;
// if(flag==2) b=b*10+4;
// if(flag==3) c=c*10+4;
// if(flag==4) d=d*10+4;
// if(flag==5) e=e*10+4;
// }
// if(ch2[p]==53)
// {
// if(flag==1) a=a*10+5;
// if(flag==2) b=b*10+5;
// if(flag==3) c=c*10+5;
// if(flag==4) d=d*10+5;
// if(flag==5) e=e*10+5;
// }
// if(ch2[p]==54)
// {
// if(flag==1) a=a*10+6;
// if(flag==2) b=b*10+6;
// if(flag==3) c=c*10+6;
// if(flag==4) d=d*10+6;
// if(flag==5) e=e*10+6;
// }
// if(ch2[p]==55)
// {
// if(flag==1) a=a*10+7;
// if(flag==2) b=b*10+7;
// if(flag==3) c=c*10+7;
// if(flag==4) d=d*10+7;
// if(flag==5) e=e*10+7;
// }
// if(ch2[p]==56)
// {
// if(flag==1) a=a*10+8;
// if(flag==2) b=b*10+8;
// if(flag==3) c=c*10+8;
// if(flag==4) d=d*10+8;
// if(flag==5) e=e*10+8;
// }
// if(ch2[p]==57)
// {
// if(flag==1) a=a*10+9;
// if(flag==2) b=b*10+9;
// if(flag==3) c=c*10+9;
// if(flag==4) d=d*10+9;
// if(flag==5) e=e*10+9;
// }
// }
a=b=c=d=e=-1;
char temp[1000]="";//sscanf 函数必须是char 类型数组
for(long long j=0;j<ch2.length();j++) temp[j]=ch2[j];
temp[ch2.length()]=0,flag3=0;
int s1=0,s2=0;
/*检查. 和 : 数量是否合法*/
for(int j=0;j<ch2.length();j++) {
if(ch2[j]=='.') s1++;
else if(ch2[j]==':') s2++;
if(s2==1&&s1!=3) flag3=1;
}
if(s1!=3||s2!=1) flag3=1;
/*字符转整数*/
sscanf(temp,"%lld.%lld.%lld.%lld:%lld",&a,&b,&c,&d,&e);
/*检查每个数是否超出范围*/
if(a>255||b>255||c>255||d>255||e>65535||a<0||b<0||c<0||d<0||e<0) flag3=1;
/*检查是否有前导零*/
for(int j=0;j<ch2.length();j++) {
if(ch2[j]=='0') {
if((j==0||ch2[j-1]<'0'||ch2[j-1]>'9')&&(ch2[j+1]>='0'&&ch2[j+1]<='9')) {
flag3=1;
}
}
}
/*下面的都没有问题*/
if(flag3!=1)
{
if(ch1=="Server")
{
long long flag1=0;
for(long long p=1;p<=s;p++)
{
if(a==k[p]&&b==l[p]&&c==m[p]&&d==n[p]&&e==o[p])
{
cout<<"FAIL"<<endl;
flag1=1;
}
}
if(flag1==0)
{
cout<<"OK"<<endl;
s++;
k[s]=a,l[s]=b,m[s]=c,n[s]=d,o[s]=e,flag2[s]=i;
}
}
else{
long long flag1=0;
for(long long p=1;p<=s;p++)
{
if(a==k[p]&&b==l[p]&&c==m[p]&&d==n[p]&&e==o[p])
{
cout<<flag2[p]<<endl;
flag1=1;
}
}
if(flag1==0) cout<<"FAIL"<<endl;
}
}
else cout<<"ERR"<<endl;
}
return 0;
}//Client 63.81.148.0:28810 Client 217.0.167.240:30040
```
by Dws_t7760 @ 2023-10-20 10:23:59
@[t7760](/user/776962) 感谢你
by x1489631649 @ 2023-10-20 10:30:30