题解 | #判断两个IP是否属于同一子网#
判断两个IP是否属于同一子网
https://www.nowcoder.com/practice/34a597ee15eb4fa2b956f4c595f03218
import sys import re def isaddress(a): if re.match(r'((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d|0)\.){3}(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d|0)',a): return True else: return False lines=[] for line in sys.stdin: lines.append(line.split()[0]) for l in lines: if not isaddress(l): print(1) exit() mask=list(map(int,lines[0].split("."))) IP1=list(map(int,lines[1].split("."))) IP2=list(map(int,lines[2].split("."))) def toZeroOne(address)->str: check="" for a in address: tmp=bin(a)[2:].zfill(8) check+=tmp return check check=toZeroOne(mask) #print(check) #print(check.count("01")) if check.count("1")==0 or check.count("0")==0 or check.count("01")>0: print(1) exit() def same(a,b,x): for i in range(4): if x[i]&a[i] != x[i]&b[i]: return False return True if same(IP1,IP2,mask): print(0) else: print(2)