为什么测试机全部RE,本地没问题,求教!!
查看原帖
为什么测试机全部RE,本地没问题,求教!!
175444
EvilSpirits楼主2022/8/11 02:29

https://www.luogu.com.cn/record/83288893

#include<bits/stdc++.h>
using namespace std;
int n;
char dic[5]={' ','.','.','.',':'};
string op,ad;
map <string,int> Server;
long long num(string Num){
	long long number=0;
	for(int i=0;i<Num.length();i++){
		number+=(Num[i]-48)*pow(10,Num.length()-i-1);
	}
	return number;
}
bool check(string AD){
	int ji=0;
	string numPart;
	long long ip[6]={0};
		for(int i=0;i<=AD.length();i++){
			if(AD[i]=='.'||AD[i]==':'||i==AD.length()){
				ji++;
				if(ji<=4&&dic[ji]!=AD[i])
					return false;
				else{
					ip[ji]=num(numPart);
					//cout<<ip[ji];
					if(ji<=4&&(ip[ji]>255||ip[ji]<0))	return false;
					else if(ip[ji]>65535||ip[ji]<0)	return false;
					numPart="";
				}
			}
			else{
				numPart.push_back(AD[i]);
			}	
	}
	string rebuild;
	for(int i=1;i<=5;i++){
		string a;
		while(ip[i]>0){
			a.push_back(ip[i]%10+48);
			ip[i]/=10;
		}
		for(int j=a.length()-1;j>=0;j--){
			rebuild.push_back(a[j]);
		}
		rebuild.push_back(dic[i]);
	}
	if(rebuild.compare(AD))	return true;
	else	return false;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>op>>ad; 
		if(check(ad)){
			if(op=="Server"){
				if(Server.count(ad)!=0)	printf("FAIL\n");
				else{
					printf("OK\n");	Server[ad]=i;
				}
			}
			else{
				if(Server.count(ad)==0)	printf("FAIL\n");
				else	printf("%d\n",Server[ad]);
			}
		}
		else{
			printf("ERR\n");
		}
	}
	return 0;
} 
2022/8/11 02:29
加载中...