题解 | #判断两个IP是否属于同一子网#
判断两个IP是否属于同一子网
https://www.nowcoder.com/practice/34a597ee15eb4fa2b956f4c595f03218
#include <bits/stdc++.h> using namespace std; int main() { long long int a, b, c, d, e, f, g, h, i, j, k, l; while (scanf("%lld.%lld.%lld.%lld", &a, &b, &c, &d)) { scanf("%lld.%lld.%lld.%lld", &e, &f, &g, &h); scanf("%lld.%lld.%lld.%lld", &i, &j, &k, &l); int flag = -1; if (a < 0 || a > 255 || b < 0 || b > 255 || c < 0 || c > 255 || d < 0 || d > 255 || e < 0 || e > 255 || f < 0 || f > 255 || g < 0 || g > 255 || h < 0 || h > 255 || j < 0 || j > 255 || k < 0 || k > 255 || l < 0 || l > 255 || i < 0 || i > 255) { flag = 1; } else if ((a < 255 && (b != 0 || c != 0 || d != 0)) || (b < 255 && (c != 0 || d != 0)) || (c < 255 && d != 0)) { flag = 1; } else { bitset<10>bit1(a); bitset<10>bit2(b); bitset<10>bit3(c); bitset<10>bit4(d); bitset<10>bit5(e); bitset<10>bit6(f); bitset<10>bit7(g); bitset<10>bit8(h); bitset<10>bit9(i); bitset<10>bit10(j); bitset<10>bit11(k); bitset<10>bit12(l); if ((bit1 & bit5) != (bit1 & bit9) || (bit2 & bit6) != (bit2 & bit10) || (bit3 & bit7) != (bit3 & bit11) || (bit4 & bit8) != (bit4 & bit12)) { flag = 2; } else { flag = 0; } } cout << flag << endl; break; } }