牛客网-华为题库-HJ39 判断两个IP是否属于同一子网

项目的详细信息参见:

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

import sys

mask = list(map(int, input().split('.')))
ip1 = list(map(int, input().split('.')))
ip2 = list(map(int, input().split('.')))
 
def islegalmask(l):
    base2 = []
    for i in l:
        if i < 0 or i > 255:
            return False
    for i in range(len(l)):
        base2.append(bin(mask[i])[2:].rjust(8, '0'))
    base2s = ''.join(base2)
    if '01' in base2s:
        return False
    else:
        cnt = 0
        for j in base2s:
            if j == '0':
                cnt += 1
        if cnt == len(base2s) or cnt == 0:
            return False
    return base2s
 
def islegalip(l):
    for i in l:
        if i < 0 or i > 255:
            return False
    return True
 
if not islegalmask(mask) or not islegalip(ip1) or not islegalip(ip2):
    print('1')
else:
    flag = 0
    for i in range(len(mask)):
        if mask[i] & ip1[i] != mask[i] & ip2[i]:
            print('2')
            flag = 1
            break
    if flag == 0:
        print('0')

Add a Comment

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据