1 solutions

  • 0
    @ 2024-12-5 18:13:42

    C++ :

    #include<iostream>
    #include<sstream>//stringstream头文件 
    #include<map>//map头文件 
    typedef long long ll;//也可以不开long long 
    using namespace std;
    bool f(string s){
    	ll a,b,c,d,e;
    	if(sscanf(s.c_str(),"%lld.%lld.%lld.%lld:%lld",&a,&b,&c,&d,&e)!=5){//输入的数字不符合要求,不是五个数 
    		return 0;
    	}
    	if(a<0||a>255||b<0||b>255||c<0||c>255||d<0||d>255||e<0||e>65535){//输入数据范围不符合要求 
    		return 0;
    	}
    	stringstream ss;//stringstream方便进出字符
    	ss<<a<<'.'<<b<<'.'<<c<<'.'<<d<<':'<<e;//将输入中的数字组合成字符串流 
    	if(ss.str()!=s){//转换成字符串比较 
    		return 0;
    	}
    	return 1;
    }
    map<string,ll>m;//定义了一个用string作为索引,并拥有相关联的指向long long的指针.
    ll n;
    string op,ad;
    int main(){
    	cin>>n;
    	for(int i=1;i<=n;i++){
    		cin>>op>>ad;
    		if(!f(ad)){//不符合要求 
    			cout<<"ERR";
    			endl(cout);
    			continue;//还有下一个,所以要continue而非break 
    		}
    		if(op[0]=='S'){//Server
    			if(m[ad]){//1or0,所以直接用 
    				cout<<"FAIL";
    				endl(cout);
    			}else{
    				m[ad]=i;
    				cout<<"OK";
    				endl(cout);
    			}
    		}else{
    			if(!m.count(ad)){//解释一下count函数: 返回指定元素出现的次数, (但是因为key值不会重复,所以只能是1 or 0) 
    				cout<<"FAIL";//没出现 
    				endl(cout);
    			}else{
    				cout<<m[ad];//输出 
    				endl(cout);
    			}
    		}
    	}
    	return 0;
    }
    
    
    • 1

    Information

    ID
    9128
    Time
    1000ms
    Memory
    512MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By