60pts求调
查看原帖
60pts求调
1120425
TuMi_Yang楼主2024/10/17 17:44
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e3+50;
typedef long long LL;
struct node{
	string ss1,s;
	int a=0,b=0,c=0,d=0,e=0,k=0,kk=0;
	string ans="";
	bool ji,pan=false;
	int num;
	int ans2;
}comp[MAXN];
int n;
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		string s2="";
		string s3="";
		int k3=0;
		cin>>comp[i].s>>comp[i].ss1;
		comp[i].num=i;
		int sizes1=comp[i].ss1.length();
		if(comp[i].s=="Server")comp[i].ji=true;
		else comp[i].ji=false;
		for(int j=0;j<sizes1;j++){
			if(k3==4){
				s3+=comp[i].ss1[j];
			}
			if(comp[i].ss1[j]!='.'&&comp[i].ss1[j]!=':'){
				s2+=comp[i].ss1[j];
			}
			else if(comp[i].ss1[j]=='.'){
				k3++;
				comp[i].k++;
				int sizes2=s2.length();
				if(comp[i].k>3){
					comp[i].ans="ERR";
					break;
				}
				else if(sizes2>1&&s2[0]=='0'){
					comp[i].ans="ERR";
					break;
				}
				else{
					if(k3==1){
						int sizes22=sizes2;
						for(int m=0;m<sizes2;m++){
							int kw=1;
							for(int n=1;n<=m;n++){
								kw*=10;
							}
							comp[i].a+=(s2[sizes22-1]-'0')*kw;
							sizes22--;
						}
						if(comp[i].a>255){
							comp[i].ans="ERR";
							break;
						}
						s2="";
						continue;
					}
					if(k3==2){
						int sizes22=sizes2;
						for(int m=0;m<sizes2;m++){
							int kw=1;
							for(int n=1;n<=m;n++){
								kw*=10;
							}
							comp[i].b+=(s2[sizes22-1]-'0')*kw;
							sizes22--;
						}
						if(comp[i].b>255){
							comp[i].ans="ERR";
							break;
						}
						s2="";
						continue;
					}
					if(k3==3){
						int sizes22=sizes2;
						for(int m=0;m<sizes2;m++){
							int kw=1;
							for(int n=1;n<=m;n++){
								kw*=10;
							}
							comp[i].c+=(s2[sizes22-1]-'0')*kw;
							sizes22--;
						}
						if(comp[i].c>255){
							comp[i].ans="ERR";
							break;
						}
						s2="";
						continue;
					}
				}
			}
			else{
				k3++;
				comp[i].kk++;
				int sizes2=s2.length();
				if(sizes2>1&&s2[0]=='0'){
					comp[i].ans="ERR";
					break;
				}
				int sizes22=sizes2;
				for(int m=0;m<sizes2;m++){
					int kw=1;
					for(int n=1;n<=m;n++){
						kw*=10;
					}
					comp[i].d+=(s2[sizes22-1]-'0')*kw;
					sizes22--;
				}
				if(comp[i].d>255){
					comp[i].ans="ERR";
					break;
				}
				s2="";
				continue;
			}
		}
		int sizes3=s3.size();
		if(sizes3>1&&s3[0]=='0'){
			comp[i].ans="ERR";
		}
		int sizes33=sizes3;
		for(int m=0;m<sizes3;m++){
			int kw=1;
			for(int n=1;n<=m;n++){
				kw*=10;
			}
			comp[i].e+=(s3[sizes33-1]-'0')*kw;
			sizes33--;
		}
		if(comp[i].e>65525){
			comp[i].ans="ERR";
		}
		if(comp[i].k!=3||comp[i].kk!=1){
			comp[i].ans="ERR";
		}
	}
	for(int i=1;i<=n;i++){
		if(comp[i].ji==false&&comp[i].ans==""){
			for(int j=1;j<=i;j++){
				if(comp[j].a==comp[i].a&&comp[j].b==comp[i].b&&comp[j].c==comp[i].c&&comp[j].d==comp[i].d&&comp[j].e==comp[i].e&&comp[j].ji==true&&comp[j].ans!="FALL"){
					comp[i].ans2=comp[j].num;
					comp[i].ans="1";
					break;
				}
			}
			if(comp[i].ans==""){
				comp[i].ans="FAIL";
			}
		}
		if(comp[i].ji==true&&comp[i].ans==""){
			comp[i].ans="OK";
			for(int j=1;j<=i-1;j++){
				if(comp[j].a==comp[i].a&&comp[j].b==comp[i].b&&comp[j].c==comp[i].c&&comp[j].d==comp[i].d&&comp[j].e==comp[i].e&&comp[j].ji==true){
//					printf("第%d个数据与第%d个数据重复",comp[i].num,comp[j].num);
					comp[i].ans="FAIL";
				}
				//TODO
			}
		}
		//TODO
	}
	for(int i=1;i<=n;i++){
		if(comp[i].ans=="1"){
			printf("%d\n",comp[i].ans2);
		}
		else{
			cout<<comp[i].ans<<endl;
		}
		//TODO
	}
	return 0;
} 
2024/10/17 17:44
加载中...