为啥总是ERR
查看原帖
为啥总是ERR
774271
yeyixuan楼主2024/10/2 15:38
#include<bits/stdc++.h>
using namespace std;
struct fuwuqi{
	string adr;
	int num;
}t[1005];
int n,sum;
bool ac(string s){
	int ds,ms,len=s.length();
	for(int i=0;i<len;i++){
		if(s[i]=='.') ds++;
		if(s[i]==':') ms++;
		if(ms>1||ds>3) return false;
		if(ms==1&&ds<3) return false;
	}//判断是否为1.1.1.1:1形式
	string num;
	for(int i=0;i<len;i++){
		if(s[i]>='0'&&s[i]<='9') num+=s[i];
		if(s[i]==':'||s[i]=='.'){
			int sig=1,sum=0;
			for(int j=i-1;j>=i-num.length();j--) {
				sum+=num[i]*sig;
				sig*=10;
				if(j==i-num.length()&&s[j]=='0') return false;//前导0
			}
			if(s[i]=='.'&&sum>255) return false;//超出限制
			if(s[i]==':'&&sum>65535) return false;
		}
	}
	return true;
}
bool rc(string s){
	for(int i=1;i<=sum;i++) {
		if(t[i].adr==s) return false;
	}
	return true;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		string op,ad;
		cin>>op>>ad;
		if(op[1]=='S'){
			if(!ac(ad)) cout<<"ERR"<<endl;
			else if(!rc(ad)) cout<<"FAIL"<<endl;
			else {
				sum++;
				t[sum].adr=ad;
				t[sum].num=i;
				cout<<"OK"<<endl;
			}	
		}
		else{
			if(!ac(ad)) cout<<"ERR"<<endl;
			else {
				bool findans=false;
				for(int j=1;j<=sum;j++){
					if(t[j].adr==ad) {
						cout<<t[j].num<<endl;
						findans=true;
						break;
					}
				}
				if(!findans) cout<<"FAIL"<<endl;
			}
		}
	}
	return 0;
}
2024/10/2 15:38
加载中...