为啥他们有75,65 ,而我却是70
查看原帖
为啥他们有75,65 ,而我却是70
515971
Owenzjg楼主2022/10/19 23:06

没啥好说的,又不是写题解

#include <bits/stdc++.h>
using namespace std;
int n;
//使用map来存储已经成功建立的服务机的地址及编号
map <string,int> mapp;

/*
 * 符合规范的服务机的要求:
 * ...:
 * 前几个数字的值必须小于等于255 最后一个数的值必须小于等于65535
 * 不能有多的前导0;
*/

bool check(string a){
	//5个字符+17+1
	
	int size=a.size();
	if(size>=23)return 0;
	string t="";
	int i;
	for(i=0;i<size;i++){
		if(!(a[i]>='0' && a[i]<='9')){
			t+=a[i];
		}
	}
	if(t!="...:")return 0;
	t="";
	for(i=0;i<size;i++){
		if(a[i]>='0' && a[i]<='9'){
			t+=a[i];
		}else{
			if(t.size()==0)return 0;
			if(t[0]=='0' && t.size()!=1)return 0;
			int num=0;
			int j;
			for(j=0;j<t.size();j++){
				num=num*10+(int)(t[j]-'0');
			}
			if(num>255) return 0;
			t="";
		}
		
	}
	int num=0;
	int j;
	if(t.size()==0)return 0;
	if(t[0]=='0' && t.size()!=1)return 0;
	for(j=0;j<t.size();j++){
		num=num*10+(int)(t[j]-'0');
	}
	if(num>65535) return 0;
	return 1;
}
int main(){
	//check 客户机
	//server 服务机
	//string str;
	//while(cin>>str) cout<<check(str);
	cin>>n;
	
	int i;
	for(i=1;i<=n;i++){
		string x,y;
		cin>>x>>y;
		if(x=="Server"){
			if(!check(y)){
				printf("ERR");
			}else if(mapp[y]){
				 printf("FAIL");
			}else{
				printf("OK");
				mapp[y]=i;
			}
		}else if(x=="Client"){
			if(!check(y)){
				printf("ERR");
			}else if(mapp[y]==0){
				printf("FAIL");
			}else{
				printf("%d",mapp[y]);
			}
		}
		printf("\n");
	}
	return 0;
}

2022/10/19 23:06
加载中...