uCoder | 1180 | Nível: 3 | Tempo Limite: 3
Calculadora IP
Adaptado por erich.rodriguesf
Competição: Interfatecs 2015
Para se comunicar, um dispositivo de rede (computador, notebook, tablet, smartphone, etc.) precisa de uma identificação única. Em uma rede local ou na Internet os dispositivos são identificados através de um endereço IP. Na versão IPv4, um endereço IP é composto de 32 bits, divididos em quatro octetos (8 bits). Para facilitar a configuração dos dispositivos pelos seres humanos, criou-se a notação ponto decimal, a qual converte cada octeto em seu valor decimal e utiliza um ponto para separá-los. Por exemplo, o endereço IP 192.168.10.5 é representado internamente pelo dispositivo de rede e pelos protocolos de comunicação como sendo 11000000 10101000 00001010 00000101. Veja a correspondência a seguir e note que todos os valores decimais são representados com 8 bits na sua versão binária.
Estes 32 bits de um endereço IP são divididos em duas partes:
• Netid: o qual identifica a rede a qual este endereço pertence. Todos os dispositivos na mesma rede devem ter o mesmo netid;
• Hostid: o qual identifica um determinado dispositivo (host) da rede.
A Figura 1 mostra a distribuição de endereços IP para os dispositivos de uma rede. Note que todos os dispositivos possuem uma parte que se repete (192.168.10) a qual corresponde ao Netid (identificador da rede). Neste esquema de distribuição, o último número (octeto) corresponde ao Hostid (identificador do host), o qual deve ser diferente para identificar cada dispositivo da rede.
Quem define qual parte é o Netid e qual parte é o Hostid é a máscara, e isso é feito pela notação binária. Usando a máscara do exemplo da Figura 1 (255.255.255.0), os bits de valor 1 (um) na máscara correspondem ao Netid e os bits com valor 0 (zero) ao Hostid. Assim, neste exemplo, os 24 primeiros bits formam o Netid e os 8 últimos formam o Hostid, veja abaixo:
Portanto, neste exemplo, com esta máscara é possível ter 254 máquinas na rede, que é a quantidade de combinações possíveis com 8 bits (Hostid) menos 2, pois a primeira combinação 00000000 (tudo bit zero no hostid) e a última 11111111 (tudo bit um no hostid) NÃO podem ser atribuídas às máquinas da rede, pois correspondem, respectivamente, ao IP DA REDE (192.168.10.0) e IP DE BROADCAST (192.168.10.255). Assim, a quantidade de bits no Hostid vai determinar a quantidade de máquinas que é possível ter na rede, bem como quais IPs pertencem a referida rede. Por exemplo, se a máscara fosse 255.255.255.192, os endereços 192.168.10.5 e 192.168.10.80 NÃO pertencem a mesma rede IP, pois:
Note que com esta máscara o Netid agora compreende os 26 bits da esquerda para a direita. Perceba que existe diferença no último bit da parte do Netid dos dois IPs comparados. Portanto eles NÃO pertencem à mesma rede IP, pois para pertencerem à mesma rede IP precisam ter os mesmos bits na parte do Netid.
Seu trabalho neste problema é dizer se dois IPs pertencem ou não à mesma rede IP.
Entrada
Cada linha da entrada é composta por dois endereços IP e uma máscara, todos na notação ponto decimal e separados por um espaço.
Saída
Para cada linha da entrada imprima na saída a letra S maiúsculo caso os dois IPs pertencem à mesma rede IP, ou a letra N maiúsculo caso não pertencem.
Exemplo de Entrada | Exemplo de Saída |
---|---|
192.168.10.5 192.168.10.80 255.255.255.0 |
S |