5pts求调
查看原帖
5pts求调
1493184
chailinyue楼主2025/8/4 18:20

有没有大佬帮帮蒟蒻,应该是check函数的问题

#include<bits/stdc++.h>
using namespace std;
#define int long long
struct node{
	int id;
    bool f;
};
string op,s={}; 
int ct=1; 
unordered_map<string,node>mps;
bool check(string &s){
 	int dian=0,mao=0,dianzhen=0,maozhen=0;
    int n=s.size();
    for(int i=0;i<n;i++){
     	if(s[i]=='.'&&s[i+1]>='0'&&s[i+1]<='9'&&s[i-1]>='0'&&s[i-1]<='9')dian++;
        if(s[i]==':'&&s[i+1]>='0'&&s[i+1]<='9'&&s[i-1]>='0'&&s[i-1]<='9')mao++;
        if(s[i]=='.')dianzhen++;
        if(s[i]==':')maozhen++;
        
    }
    if(dian!=3||mao!=1||dianzhen!=3||maozhen!=1){
        return false;
    }
    int sum=0;
    for(int i=0;i<n;i++){
    	if(i==n-1){
    		sum=sum*10+(s[i]-'0');
    		if(sum<0||sum>65535){
                return false;
            }
    		continue;
		}
     	if(s[i]=='.'||s[i]==':'){
         	if(sum<0||sum>255){
                return false;
            }
            sum=0;
            continue;
        }
        sum=sum*10+(s[i]-'0');
    }
    for(int i=0;i<n;i++){
     	if(s[i]=='0'&&(s[i-1]=='.'||i-1<0||s[i-1]==':')){
            return false;   
        }
    }
    return true;
}
void solve1(){
    s={};
 	cin>>s;
    if(!check(s)){
        cout<<"ERR\n";
        return;
    }
    if(mps[s].f==true){
     	cout<<"FAIL\n";
        return;
    }
    mps[s].f=true;
    mps[s].id=ct;
    cout<<"OK\n";
    
    return;
}
void solve2(){
    s={};
    cin>>s;
    if(!check(s)){
        cout<<"ERR\n";
        return;
    }
    if(mps[s].f==false){
        cout<<"FAIL\n";
        return;
	}
	cout<<mps[s].id<<"\n";
    return;
}
signed main(){
    int n;
    cin>>n;
    
   for(int i=1;i<=n;i++){
     	cin>>op;
        if(op=="Server")solve1();
        else solve2();
        ct++;
    }
    return 0;
}
2025/8/4 18:20
加载中...