题解 | #判断两个IP是否属于同一子网#
判断两个IP是否属于同一子网
http://www.nowcoder.com/practice/34a597ee15eb4fa2b956f4c595f03218
参考题解写出来的
#include<bits/stdc++.h>
using namespace std;
int main(){
vector<int> mask(4,0);
vector<int> ip1(4,0);
vector<int> ip2(4,0);
char c;
while(cin>>mask[0]>>c>>mask[1]>>c>>mask[2]>>c>>mask[3]){
cin>>ip1[0]>>c>>ip1[1]>>c>>ip1[2]>>c>>ip1[3];
cin>>ip2[0]>>c>>ip2[1]>>c>>ip2[2]>>c>>ip2[3];
int res=0;
for(int i=0;i<4;++i){
if(mask[i]<0||mask[i]>255||ip1[i]<0||ip1[i]>255||ip2[i]<0||ip2[i]>255){
res=1;break;
}
}
for(int i=0;i<3;i++){
if(mask[i]<255 && mask[i+1]>0)
{
res = 1;
break;
}
}
if(res==1){
cout<<1<<endl;
}else{
for(int i=0;i<4;++i){
if((mask[i]&ip1[i])!=(mask[i]&ip2[i])){
res=2;
break;
}
}
cout<<res<<endl;
}
}
return 0;
}