题解 | #判断两个IP是否属于同一子网#
判断两个IP是否属于同一子网
https://www.nowcoder.com/practice/34a597ee15eb4fa2b956f4c595f03218
def check_ip_or_mask(parts): # 检查IP地址或子网掩码的每个部分是否在0到255之间 return all(0 <= int(p) <= 255 for p in parts) def is_valid_mask(mask): # 将子网掩码转换为二进制字符串 bin_mask = "".join(["{:08b}".format(int(part)) for part in mask]) # 找到第一个0出现的位置 first_zero_index = bin_mask.find("0") # 确保从第一个0之后不再出现1 return "1" not in bin_mask[first_zero_index:] while True: try: mask = input().split(".") ip1 = input().split(".") ip2 = input().split(".") if not ( check_ip_or_mask(mask) and check_ip_or_mask(ip1) and check_ip_or_mask(ip2) and is_valid_mask(mask) ): print("1") continue def get_bin(intList): return "".join(["{:08b}".format(int(i)) for i in intList]) def is_same_net(mask, ip1, ip2): bin_mask = int(get_bin(mask), 2) p1_net = int(get_bin(ip1), 2) & bin_mask p2_net = int(get_bin(ip2), 2) & bin_mask print(0 if p1_net == p2_net else 2) is_same_net(mask, ip1, ip2) except EOFError: break