75分求调
查看原帖
75分求调
1211335
_liujunming_楼主2024/10/2 16:05
#include<bits/stdc++.h>
using namespace std;
int n;
string pd;//判断他是服务机还是客户机(的字符串) 
string a[1005],b[1005];//a是服务机发送的字符串,b是客户机发的字符串
int aaa[1005],bbb[1005];//编号 
int aa=0,bb=0;//a/b的第几个 
bool hegui(string k)//判断是否合规 
{
	unsigned long long sum=0,s2=0,s3=0;
	for(int i=0;i<k.size();i++)
	{
		if(!(k[i]>='0'&&k[i]<='9')&&k[i]!='.'&&k[i]!=':')return false;
		if(k[i]>='0'&&k[i]<='9')
		{
			sum=sum*10+k[i]-'0';
			if(sum==0)
			{
				if(i==k.size()-1)break;
				if(k[i+1]>='0'&&k[i+1]<='9')return false;
			}
		}
		else
		{
			s2++;
			if(i==k.size()-1)return false;
			if(i==0)return false;
			if(!(k[i-1]>='0'&&k[i-1]<='9'))return false;
			if(s2>4)return false;
			if(s2<4&&k[i]==':')return false;
			if(s2==4&&k[i]=='.')return false;
			if(sum>255||sum<0)return false;
			sum=0; 
		}
	}
//	if(s3!=4)return false;
	if(sum>65535||sum<0)return false;
	return true;
}
int main()
{
//	freopen("network3.in","r",stdin);
//	freopen("network3.ans","w",stdout);
	cin>>n;
//	cout<<hegui("3.3.3:2.3")<<" "<<hegui("2.2.2.2:-1")<<" "<<hegui("-1.0.0.0:2")<<' '<<hegui("0.0.0.0:0");
//	cout<<hegui("3.2.3.:44");
//	cout<<" "<<hegui(".3.3.3:2");
//	cout<<" "<<hegui("3.3.3.2:");
	for(int i=1;i<=n;i++)
	{
		cin>>pd;
		if(pd=="Server")
		{
			cin>>a[aa+1];
			aa++;
			aaa[aa]=i;
			if(!hegui(a[aa]))
			{
				cout<<"ERR\n";
				continue;
			}
			bool s=true;
			for(int j=1;j<aa;j++)
			{
				if(a[j]==a[aa])
				{
					s=false;
					cout<<"FAIL\n";
					break;
				}
			}
			if(!s)continue;
			cout<<"OK\n";
		}
		else
		{
			cin>>b[bb+1];
			bb++;
			bbb[bb]=i;
			if(!hegui(b[bb]))
			{
				cout<<"ERR\n";
				continue;
			}
			bool s=true;
			for(int j=1;j<=aa;j++)
			{
				if(a[j]==b[bb])
				{
					cout<<aaa[j]<<"\n";
					s=false;
					break;
				}
			}
			if(!s)continue;
			cout<<"FAIL\n";
		}
	}
	return 0;
}
2024/10/2 16:05
加载中...