题解 | #判断两个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
纯纯的苦力活,学不到东西
腾讯成长空间 5981人发布