题解 | #判断两个IP是否属于同一子网#
判断两个IP是否属于同一子网
https://www.nowcoder.com/practice/34a597ee15eb4fa2b956f4c595f03218
#include <iostream>
using namespace std;
int main() {
int mask[4] = {0};
int ip1[4] = {0};
int ip2[4] = {0};
char delimiter;
int flag = 0;
cin >> mask[0] >> delimiter >> mask[1]
>> delimiter >> mask[2] >> delimiter >> mask[3];
cin >> ip1[0] >> delimiter >> ip1[1]
>> delimiter >> ip1[2] >> delimiter >> ip1[3];
cin >> ip2[0] >> delimiter >> ip2[1]
>> delimiter >> ip2[2] >> delimiter >> ip2[3];
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) {
flag = 1;
break;
}
}
for (int i = 0; i < 3 ; i++) {
if (mask[i] < 255 && mask[i + 1] > 0) {
flag = 1;
break;
}
}
if (flag == 1) {
cout << flag << endl;
return 0;
}
for (int i = 0; i < 4 ; i++) {
// cout << mask[i] << endl;
// cout << ip1[i] << endl;
// cout << ip2[i] << endl;
if ((ip1[i]&mask[i]) != (ip2[i]&mask[i])) {
flag = 2;
cout << flag << endl;
return 0;
}
}
flag = 0;
cout << flag << endl;
}
// 64 位输出请用 printf("%lld")

