pj T3莫名保灵
  • 板块学术版
  • 楼主rfsfreffr
  • 当前回复11
  • 已保存回复11
  • 发布时间2021/10/30 22:42
  • 上次更新2023/11/4 01:48:48
查看原帖
pj T3莫名保灵
175011
rfsfreffr楼主2021/10/30 22:42
#include <bits/stdc++.h>
using namespace std;
int a,b,c,d,e;
string s1,s2;
int n;
map<string,int>mp;
bool getnum (string s) {
	string s3="";
	int p=0,f=0;
	int k=0;
	int len=s.length();
	int tt=0;
	s3=""; 
	k=0;
	f=0;
	if(s[p]=='0') f=1;
	while( p<len&&'0'<=s[p]<='9'&&p<len) {
		
		if(s[p]<'0'||s[p]>'9') break;
		tt++;
		k=1;
		a=a*10+s[p]-'0';
		p++;
		if(s[p]=='0'&&f>=1) f++;
	}
	if(tt>3) return 0;
	if(k==0) return 0;
	if(f>=1&&a>0) return 0;
	if(f>1) return 0;
	while((s[p]<'0'||s[p]>'9')&&p<len) {
		s3+=s[p];
		p++;
	}
	if(s3!=".") return 0;
	tt=0;
	k=0;
	s3=""; 
	f=0;
	if(s[p]=='0') f=1;
	while( p<len&&'0'<=s[p]<='9'&&p<len) {
		
		if(s[p]<'0'||s[p]>'9') break;
		k=1;
		tt++;
		b=b*10+s[p]-'0';
		p++;
		if(s[p]=='0'&&f>=1) f++;
	}
	if(tt>3) return 0;
	if(k==0) return 0;
	if(f>=1&&b>0) return 0;
	if(f>1) return 0;
	while((s[p]<'0'||s[p]>'9')&&p<len) {
		s3+=s[p];
		p++;
	}
	if(s3!=".") return 0;
	s3=""; 
	f=0;
	k=0;
	tt=0;
	if(s[p]=='0') f=1;
	while( p<len&&'0'<=s[p]<='9'&&p<len) {
		
		if(s[p]<'0'||s[p]>'9') break;
		k=1;
		tt++;
		c=c*10+s[p]-'0';
		p++;
		if(s[p]=='0'&&f>=1) f++;
	}
	if(tt>3) return 0;
	if(k==0) return 0;
	if(f>=1&&c>0) return 0;
	if(f>1) return 0;
	while((s[p]<'0'||s[p]>'9')&&p<len) {
		s3+=s[p];
		p++;
	}
	if(s3!=".") return 0;
	s3=""; 
	f=0;
	k=0;
	tt=0;
	if(s[p]=='0') f=1;
	while( p<len&&'0'<=s[p]<='9'&&p<len) {
		if(s[p]<'0'||s[p]>'9') break;
		k=1;
		tt++;
		d=d*10+s[p]-'0';
		p++;
		if(s[p]=='0'&&f>=1) f++;
	}
	if(tt>3) return 0;
	if(k==0) return 0;
	if(f>=1&&d>0) return 0;
	if(f>1) return 0;
	while((s[p]<'0'||s[p]>'9')&&p<len) {
		s3+=s[p];
		p++;
	}
	if(s3!=":") return 0;
	s3=""; 
	f=0;
	k=0;
	tt=0;
	if(s[p]=='0') f=1;
	while( p<len&&'0'<=s[p]<='9'&&p<len) {
		if(s[p]<'0'||s[p]>'9') break;
		k=1;
		tt++;
		e=e*10+s[p]-'0';
		p++;
		if(s[p]=='0'&&f>=1) f++;
	}
	if(tt>5) return 0;
	if(k==0) return 0;
	if(f>=1&&e>0) return 0;
	if(f>1) return 0;
	while((s[p]<'0'||s[p]>'9')&&p<len) {
		s3+=s[p];
		p++;
	}
//	cout<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<e<<endl;
	//cout<<s3<<endl;
	if(s3!="") return 0;
	if(a>=0&&a<=255&&b>=0&&b<=255&&c>=0&&c<=255&&d>=0&&d<=255&&e>=0&&e<=65535) return 1;
	return 0;
}
int main () {
	freopen("network.in","r",stdin);
	freopen("network.txt","w",stdout);
	cin>>n;
//	while(1) {
//		a=b=c=d=e=0;
//		cin>>s1;
//		cout<<s1<<endl;
//		cout<<getnum(s1)<<endl;
//	}
	int f=0;
	for(int i=1; i<=n; i++) {
		cin>>s1>>s2;
		a=b=c=d=e=0;
		f=getnum(s2);
		if(f==0) {
			puts("ERR");
			continue;
		}
		if(s1=="Server") {
			if(mp[s2]!=0) {
				puts("FAIL");
				continue;
			} else {
				mp[s2]=i;
				puts("OK");
				continue;
			}
		}
		if(s1=="Client") {
			if(mp[s2]==0) {
				puts("FAIL");
				continue;
			} else {
				printf("%d\n",mp[s2]);
				continue;
			}
		}
	}
	return 0;
}

去掉freopen 洛谷100,CCF保灵

2021/10/30 22:42
加载中...