为什么做题时交到洛谷上WA了,把数据下载下来用freopen输出到文件里,然后用system("fc .... ....")来验证对不对,结果一模一样,有哪位大佬解答一下。
代码:
#include<bits/stdc++.h>
using namespace std;
int n;
string a,b;
map<string,int>q;
bool pd() {
/*
IP 中某个数字超出范围。
*/
int len=b.length(),m=0,d=0,cnt=1;
long long e[6];
memset(e,0,sizeof(e));
if(b[0]<'0'||b[0]>'9') { //IP 的第 1个字符不为数字;
//cout<<"IP 的第 1个字符不为数字;"<<endl;;
return false;
}
if(b[0]=='0'&&b[1]!='.') { //IP 的第 1 个字符为 0,且第 2 个字符为数字;
//cout<<"IP 的第 1 个字符为 0,且第 2 个字符为数字;"<<endl;;
return false;
}
if(b[len-1]<'0'||b[len-1]>'9') { //IP 的最后 1 个字符不为数字;
//cout<<"IP 的最后 1 个字符不为数字;"<<endl;;
return false;
}
for(int i=0; i<len; i++) {
if(b[i]=='.'){
d++;
}
if(b[i]=='.'||b[i]==':') {
cnt++;
}
if(b[i]>='0'&&b[i]<='9') {
e[cnt]=e[cnt]*10+(b[i]-'0');
}
if(!((b[i]>='0'&&b[i]<='9')||b[i]=='.'||b[i]==':')) {//IP 包含除数字,“.”与“:”之外的字符;
//cout<<"IP 包含除数字,“.”与“:”之外的字符;"<<endl;;
return false;
}
if(b[i]==':') { //IP 中“:”之前的“.”的个数不足 3 个;
m++;
if(d<3) {
//cout<<"IP 中“:”之前的“.”的个数不足 3 个;"<<endl;;
return false;
}
}
if(b[i]=='.'&&(b[i+1]<'0'||b[i+1]>'9')) { //IP 中某个“.”之后的第 1 个字符不为数字;
//cout<<"IP 中某个“.”之后的第 1 个字符不为数字;"<<endl;;
return false;
}
if(b[i]=='.'&&b[i+1]=='0'&&(b[i+2]>='0'&&b[i+2]<='9')) { //IP 中某个“.”之后的第 1 个字符为 0,且第 2 个字符为数字;
//cout<<"IP 中某个“.”之后的第 1 个字符为 0,且第 2 个字符为数字;"<<endl;;
return false;
}
if(b[i]==':'&&(b[i+1]<'0'||b[i+1]>'9')) { //IP 中“:”之后的第 1 个字符不为数字;
//cout<<"IP 中“:”之后的第 1 个字符不为数字;"<<endl;;
return false;
}
if(b[i]==':'&&b[i+1]=='0'&&(b[i+2]>='0'&&b[i+2]<='9')) { //IP 中“:”之后的第 1 个字符为 0,且第 2 个字符为数字;
//cout<<"IP 中“:”之后的第 1 个字符为 0,且第 2 个字符为数字;"<<endl;;
return false;
}
}
if(m!=1||d!=3) { // IP 中“.”的个数不为3 个;// IP 中“:”的个数不为 1 个;
// printf("冒号:%d 点:%d\n",m,d);
// cout<<"IP 中“.”的个数不为3 个; IP 中“:”的个数不为 1 个;"<<endl;;
return false;
}
if(e[1]<=255&&e[2]<=255&&e[3]<=255&&e[4]<=255&&e[5]<=65535) {
//cout<<"可以"<<endl;;
return true;
} else {
//cout<<"数字太大"<<endl;;
return false;
}
}
int main() {
// freopen("P7911_13.in","r",stdin);
// freopen("huangjunhan.out","w",stdout);
scanf("%d",&n);
for(int i=1; i<=n; i++) {
cin>>a>>b;
cout<<i<<" ";
if(a[0]=='S') {
if(q[b]==0&&pd()==true) {
q[b]=i;
printf("OK\n");
} else {
if(pd()==true&&q[b]!=0) {
printf("FAIL\n");
} else {
if(pd()==false) {
printf("ERR\n");
}
}
}
} else {
if(pd()==true&&q[b]!=0) {
printf("%d\n",q[b]);
} else {
if(pd()==true&&q[b]==0) {
printf("FAIL\n");
} else {
if(pd()==false) {
printf("ERR\n");
}
}
}
}
}
return 0;
}