Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def addr_to_int(addr):
- octet = [int(x) for x in addr.split('.')]
- a = octet[0] << 24
- b = octet[1] << 16
- c = octet[2] << 8
- d = octet[3]
- return a + b + c + d
- subnet, subnet_mask_num = input().split('/')
- subnet = addr_to_int(subnet)
- subnet_mask_num = int(subnet_mask_num)
- subnet_mask = 0xFFFFFFFF << (32 - subnet_mask_num)
- N = int(input())
- addresses = []
- for i in range(N):
- addresses.append(addr_to_int(input()))
- first_addr = subnet & subnet_mask
- all_addr = 2 ** (32 - subnet_mask_num)
- broadcast = first_addr + all_addr - 1
- occupied = 0
- for addr in addresses:
- if addr == first_addr or addr == broadcast:
- print(-1)
- exit(0)
- if addr >= first_addr and addr <= broadcast:
- occupied += 1
- print(all_addr - occupied - 2)
Add Comment
Please, Sign In to add comment