import java.util.*;
public class PanDuanIpTongZiWang {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String yanMa = sc.next();
String ip1 = sc.next();
String ip2 = sc.next();
if (goodYanMa(yanMa) && goodIp(ip1) && goodIp(ip2)) {
if ((change(yanMa) & change(ip1)) == (change(yanMa) & change(ip2)))
System.out.println("Ip1与Ip2同属一个子网");
else
System.out.println("Ip1与Ip2不属一个子网");
} else
System.out.println("不合法的Ip或子网掩码");
}
}
public static long change(String s) {
String[] split = s.split("\\.");
StringBuilder builder = new StringBuilder();
for (String s1 : split) {
String s2 = Long.toString(Long.parseLong(s1), 2);
while (s2.length() != 8) {
s2 = new StringBuilder(s2).insert(0, 0).toString();
}
builder.append(s2);
}
return Long.valueOf(builder.toString(), 2);
}
public static boolean goodIp(String s) {
String[] split = s.split("\\.");
if (split.length!=4)
return false;
for (String s1 : split) {
if (Integer.parseInt(s1) < 0 || Integer.parseInt(s1) > 255) {
return false;
}
}
return true;
}
public static boolean goodYanMa(String s) {
String[] split = s.split("\\.");
if (split.length != 4)
return false;
StringBuilder builder = new StringBuilder();
for (String s1 : split) {
if (Integer.parseInt(s1) >= 0 && Integer.parseInt(s1) <= 255) {
String s2 = Long.toString(Long.parseLong(s1), 2);
while (s2.length() != 8) {
s2 = new StringBuilder(s2).insert(0, 0).toString();
}
builder.append(s2);
} else {
return false;
}
}
String toString = builder.toString();
if (toString.equals("11111111111111111111111111111111") || toString.equals("00000000000000000000000000000000")) {
return false;
}
for (int i = 0; i < toString.length() - 1; i++) {
String substring = toString.substring(i, i + 2);
if (substring.equals("01")) {
return false;
}
}
return true;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)