震惊!这个蒟蒻居然只有5pts!快帮帮他!
#include<stdio.h>
#include<iostream>
#include<string>
#include<map>
using namespace std;
string kind;
char address[100];
map<string,int> m;
int s_num=0;
string courge(string f,int n){
if(!n) return f;
return courge(f,n/10)+((char)(n%10+'0'));
}
string cheer_up(int a,int b,int c,int d,int e){
string wen="";
wen+=courge("",a);
wen+=".";
wen+=courge("",b);
wen+=".";
wen+=courge("",c);
wen+=".";
wen+=courge("",d);
wen+=":";
wen+=courge("",e);
return wen;
}
int main(){
int n;
scanf("%d",&n);
while(n--){
int a,b,c,d,e;
cin>>kind>>address;
if(kind=="Server"){
++s_num;
int num=sscanf(address,"%d.%d.%d.%d:%d",&a,&b,&c,&d,&e);
if(num!=5||a<0||a>255||b<0||b>255||c<0||c>255||d<0||d>255||e<0||e>65535){
printf("ERR\n");
continue;
}
string ghj=cheer_up(a,b,c,d,e);
if(ghj!=address){
printf("ERR\n");
continue;
}
if(m[ghj]!=0){
printf("FAIL\n");
continue;
}
m[ghj]=s_num;
printf("OK\n");
}
if(kind=="Client"){
++s_num;
int num=sscanf(address,"%d.%d.%d.%d:%d",&a,&b,&c,&d,&e);
if(num!=5||a<0||a>255||b<0||b>255||c<0||c>255||d<0||d>255||e<0||e>65535){
printf("ERR\n");
continue;
}
string ghj=cheer_up(a,b,c,d,e);
if(ghj!=address){
printf("ERR\n");
continue;
}
if(!m[ghj]) printf("FAIL\n");
else printf("%d\n",m[ghj]);
}
}
return 0;
}
注:样例没问题,思路似乎也没问题(废话)