题解 | #判断两个IP是否属于同一子网#
判断两个IP是否属于同一子网
https://www.nowcoder.com/practice/34a597ee15eb4fa2b956f4c595f03218
def check(x,y,z):
m_bin=''
for i in x: #检查子网掩码是否合法
if i<0 or i>255:
return False
p=bin(i)[2::].zfill(8)
m_bin+=p
a=m_bin.find('0') #从左侧开始找'0'
b=m_bin.rfind('1')#从右侧开始找'1'
if a-b!=1 or b==-1:
return False
for j in y: #检查IP是否合法
if j<0 or j>255:
return False
for k in z:
if k<0 or k>255:
return False
return True
def And(x,y): #进行AND运算
AND=[]
for i in range(4):
AND.append(x[i]&y[i])
return AND
while True:
try:
mask=list(map(int,input().split('.')))
ip1=list(map(int,input().split('.')))
ip2=list(map(int,input().split('.')))
if check(mask,ip1,ip2):
a=And(mask,ip1)
b=And(mask,ip2)
if a==b:
print(0)
else:
print(2)
else:
print(1)
except:
break
查看21道真题和解析