题解 | #判断两个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;
    }
}

全部评论

相关推荐

od现在都成这样了&nbsp;就业市场真是crazy
牛客473059135号:没事,我有个朋友是985本硕学计算机的,被华为卡目标院校了简历挂,不过不是od虽然人家拿到一堆别的offer了就挺搞笑的属于是……
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务