65WA,求调,下载了第一个错误点,文本比对我的输出和答案一样
查看原帖
65WA,求调,下载了第一个错误点,文本比对我的输出和答案一样
890346
Autumn_0930楼主2023/10/19 22:01
#include<bits/stdc++.h>
using namespace std;
int n;
map<string,int>m;
bool check(string ad){
	int sum=0,tmp=1,flag=0;
	for(int i=0;i<ad.size();i++){
		if(ad[i]>='0'&&ad[i]<='9'){
			if(ad[i-1]=='.'||ad[i-1]==':'||i==0){
				if(ad[i]=='0') flag=i;
			}
			if(flag){
				if(flag==i-1&&ad[i]=='0') return 0;
			}
			sum=sum*10+(ad[i]-'0');
		}else if(tmp==4){
			if(ad[i]==':'){
				if(!(ad[i-1]>='0'&&ad[i-1]<='9')) return 0;
				if(sum<=255){
					flag=0;
					sum=0;
					tmp++;
					continue;
				}else return 0;
			}else return 0;
		}else if(tmp<4){
			if(ad[i]=='.'){
				if(!(ad[i-1]>='0'&&ad[i-1]<='9')||i==0) return 0;
				if(sum<=255){
					flag=0;
					sum=0;
					tmp++;
					continue;
				}
				else return 0;
			}else return 0;
		}else return 0;
	}
	if(sum<=65535) return 1;
	return 0;
}
int main(){
	freopen("P7911_13","r",stdin);
	freopen("P7911_13","w",stdout);
	cin>>n;
	for(int i=1;i<=n;i++){
		string op,ad;
		cin>>op>>ad;
		if(!check(ad)){
			cout<<"ERR"<<endl;
			continue;
		}
		if(op=="Server"){
			if(m[ad]) cout<<"FAIL"<<endl;
			else{
				cout<<"OK"<<endl;
				m[ad]=i;
			}
		}else{
			if(!m[ad]) cout<<"FAIL"<<endl;
			else cout<<m[ad]<<endl;
		}
	}
	return 0;
} 

我知道这个很难调,但希望有人帮,求求了

2023/10/19 22:01
加载中...