求助大牢
查看原帖
求助大牢
1083163
Fyh090210楼主2024/10/24 20:14
#include<bits/stdc++.h>
using namespace std;
long long n,cnt1,cnt2,cnt3,ko,sum;
stack<int> kl;
string s,s2;
map<string,long long> m,mp;
bool check(string s)
{
	sum=0;
	string ans="1.1.1.1:1";
	string f="";
	bool f2;
	for(long long i=0;i<s.length();i++)
	{
		f2=false;
		while(i<s.length() && s[i]>='0' && s[i]<='9')
		{
			f2=true;
			i++;
		}
		if(f2)
		{
			f+='1';
		}
		if(i<s.length())
		{
			f+=s[i];
		}
	}
	if(f!=ans)
	{
		return false;
	}
	for(long long i=0;i<s.length();i++)
	{
		if(s[i]==':')
		{
	   		ko=i;
			break;
		}
	}
	for(long long i=0;i<ko;i++)
	{
		if(s[i]=='.')
		{
			if(sum<0 || sum>255)
			{
				 return false;
			}
			sum=0;
		}
		else if(s[i]>='0' && s[i]<='9')
		{
			sum=sum*10+s[i]-'0';
		}
	}
	if(sum>255 || sum<0) return false;
	sum=0;
	for(long long i=ko+1;i<s.length();i++)
	{
		sum=sum*10+s[i]-'0';
	}
	if(sum>65535) return false;
	sum=0;
	long long kai=0;
	for(long long i=0;i<s.length();i++)
	{
		if(s[i]=='.')
		{
			for(long long j=kai;j<i;j++)
			{
				if(s[j]=='0') sum++;
				if(s[j]>='1' && s[j]<='9') break;
			}
		}
		if(kai==i-1 && sum==1)
		{
			kai=i+1;
			continue;
		}
		if(sum==0)
		{
			kai=i+1;
			continue;
		}
		else
		{
			return false;
		}
	}
	return true;
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>s>>s2;
		if(!check(s2)) cout<<"ERR\n";
		else if(s == "Server")
		{
			if(m[s2]==1) cout<<"FAIL\n";
			else
			{
				m[s2]=1;
				mp[s2]=i;
				cout<<"OK\n";
			}
		}
		else if(s == "Client")
		{
			if(m[s2]!=1) cout<<"FAIL\n";
			else
			{
				cout<<mp[s2]<<"\n";
			}
		}
	}
	return 0;
}
2024/10/24 20:14
加载中...