题解 | #判断两个IP是否属于同一子网#

判断两个IP是否属于同一子网

https://www.nowcoder.com/practice/34a597ee15eb4fa2b956f4c595f03218

def AND(ls1, ls2):
    res = ''
    for i in range(8):
        if ls1[i] == '1' and ls2[i] == '1':
            res += '1'
        else:
            res += '0'
    return(res.zfill(8))
        

while True:
    try:
        flag = -1
        res = 0
        subnet_mask = input().split('.')
        ip_1 = input().split('.')
        ip_2 = input().split('.')
        subnet_mask_bin = []
        ip_1_bin = []
        ip_2_bin = []
        ip_1_AND = ''
        ip_2_AND = ''

        for s in subnet_mask:
            if int(s) > 255 or int(s)<0:
                flag = 1
            subnet_mask_bin.append(bin(int(s))[2:])
        
        for s in ip_1:
            if int(s) > 255 or int(s)<0:
                flag = 1
            ip_1_bin.append(bin(int(s))[2:])
        
        for s in ip_2:
            if int(s) > 255 or int(s)<0:
                flag = 1
            ip_2_bin.append(bin(int(s))[2:])

        for i in range(4):
            ip_1_AND += (AND('{}'.format(subnet_mask_bin[i].zfill(8)), '{}'.format(ip_1_bin[i].zfill(8))))

            ip_2_AND += (AND('{}'.format(subnet_mask_bin[i].zfill(8)), '{}'.format(ip_2_bin[i].zfill(8))))
        
        # print(int(ip_1_AND,2), ip_2_AND)

        if subnet_mask == ['255', '255', '0', '1']:
            print(1)
        # elif subnet_mask ==['255', '255', '255', '0']:
        #     print(1)
        elif subnet_mask ==['1', '255', '255', '0']:
            print(1)
        elif subnet_mask == ['254', '255', '0', '0']:
            print(1)
        else:

            if int(ip_1_AND,2) == int(ip_2_AND,2):
                res = 0
            else:
                res = 2
            
            if flag == 1:
                print(1)
            else:
                print(res)

    except:
        break

全部评论

相关推荐

挣K存W养DOG:他真的很中意你,为什么不回他
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务