题解 | #判断两个IP是否属于同一子网# python3
判断两个IP是否属于同一子网
https://www.nowcoder.com/practice/34a597ee15eb4fa2b956f4c595f03218
import sys from typing import List val_mask = [0] for x in reversed(range(8)): new_mask = max(val_mask)+ (1<<x) val_mask.append(new_mask) def is_val_mask(mask: List[int]) -> bool: if all(x == 255 for x in mask): return False if all(x == 0 for x in mask): return False for x in range(4): if mask[x] == 255: continue if mask[x] in val_mask: if sum(mask[x+1:]) != 0: return False return True return False def is_val_address(address: List[int]) -> bool: if len(address) != 4: return False for x in address: if x<0 or x >255: return False return True def binary_and(mask,ip): return list(map(lambda x,y: x&y, ip,mask)) def solve(mask,ip_1,ip_2): if not (is_val_address(ip_1) and is_val_address(ip_2) and is_val_address(mask) and is_val_mask(mask)): return 1 return 0 if binary_and(mask,ip_1) == binary_and(mask,ip_2) else 2 while True: try: mask = list(map(int,input().split('.'))) ip_1 = list(map(int,input().split('.'))) ip_2 = list(map(int,input().split('.'))) print(solve(mask,ip_1,ip_2)) except: break
纯纯的苦力活,学不到东西