求大佬捉判定函数的虫
查看原帖
求大佬捉判定函数的虫
302539
XieGuiYi_aic楼主2022/9/12 15:11
#include<bits/stdc++.h>
using namespace std;
map<string,int> p;
int n;
bool OK(string x)
{
	int ljq=1,k=0,findp=0,fp=0;
	int i;
	for(i=x.size()-1;i>=0;i--)
	{
		if(i!=0)
		if((x[i-1]==':'||x[i-1]=='.')&&x[i]=='0')
		break;;
		if(i==0)
		{
			if(fp!=3)
				break;
			if(k>255)
				break;
		}
		if(x[i]=='.')
		{
			fp++;
			if(findp!=1)
			break;
			if(k>255)
			break;;
			k=0;
			ljq=1;
		}
		else if(x[i]==':')
		{
			
			if(findp!=0)
			break;
			findp++;
			if(k>65535)
			break;;
			k=0;
			ljq=1;
		}
		else if(x[i]<='9'&&x[i]>='0')
		{
			k=k+(x[i]-'0')*ljq;
			ljq*=10;
		}
	}
	return !(i+1);
}
int main()
{
	cin>>n;
	for(int i=0;i<n;i++)
	{
		string x,a;
		cin>>x>>a;
		if(x[0]=='C')
		{
			if(OK(a))
			{
				int ghd=p[a];
				if(p[a])
				{
					cout<<p[a]<<"\n";
				}
				else
				{
					cout<<"FAIL\n";
				}
			}
			else
			{
				cout<<"ERR\n";
			}
		}
		if(x[0]=='S')
		{
			if(OK(a))
			{
				if(p[a])
				{cout<<"FAIL\n";
					
				}
				else
				{
					cout<<"OK\n";
					p[a]=i+1;
					int ghd=p[a];
				}
			}
			else
			{
				cout<<"ERR\n";
			}
		}
	}
	return 0;
}

2022/9/12 15:11
加载中...