题意:输入m代表接下来的数据个数,计算接下来输入数据的网络掩码,和最小网络地址。

思路:
①子网掩码:先将数据转为二进制,判断从哪一位开始有数据不一样,记下下标index,
则子网掩码是index的前面是1,后面是0(2#),就是子网掩码,再转为10#输出;
②最小网络地址:用任意一个IP与子网掩码进行按位与运算得出最小IP,与运算的符号为&。
 import java.util.Scanner;

 public class UVA1590 {

     public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int m;
while(scanner.hasNext())
{
m=scanner.nextInt();
String[][] strTwo=new String[1000][4];//输入的数据存为二进制
StringBuffer[] stringBuffer=new StringBuffer[4];
int[] resCover=new int[4];//掩码结果 10#
int[] resMin=new int[4];//最小网络地址结果 10#
int [][] numTen = new int[1000][4];//输入的数据存为10进制
for(int i=0;i<m;i++)
{
String string=scanner.next();
String [] strTen=string.split("\\.");//"."有特殊含义,要加\\
int [] numTwo=new int[4];
for(int j=0;j<strTen.length;j++)
{
//ε=(´ο`*)))唉,不知道为什么我这么麻烦
numTen[i][j]=Integer.parseInt(strTen[j].toString());//string->int 10#
strTwo[i][j]=Integer.toBinaryString(numTen[i][j]);//10#->2#
numTwo[j]=Integer.parseInt(strTwo[i][j]);//string->int 2#
strTwo[i][j]=String.format("%08d", numTwo[j]);//2# 标准化,如果有1000->00001000
}
}
int index=32;//最左一个不同出现的地方的下标,他前面全是1,后面全是0(子网掩码)
boolean flag=true;
for(int j=0;j<4&&flag;j++)
{ for(int k=0;k<8&&flag;k++)
{
char ch=strTwo[0][j].charAt(k);
for(int l=0;l<m;l++)
{
if(strTwo[l][j].charAt(k)!=ch)
{
index=(j)*8+k;
flag=false;
break;
}
}
}
}
StringBuffer Cover=new StringBuffer();
StringBuffer[] strCover=new StringBuffer[4];
strCover[0]=new StringBuffer();
strCover[1]=new StringBuffer();
strCover[2]=new StringBuffer();
strCover[3]=new StringBuffer();
for(int j=0,n=0;j<32;j++)
{
if(j<index)
strCover[j/8].append('1');
else
strCover[j/8].append('0');
}
for(int j=0;j<4;j++)
{
resCover[j]=Integer.parseInt(strCover[j].toString(), 2);
} int indexmin=0;//与掩码相与的下标 for(int j=0;j<4;j++)
{
int res=resCover[j]&numTen[indexmin][j];//任意一个子网与掩码相与,则为最小网络地址
resMin[j]=res;
} for(int j=0;j<4;j++)
{
if(j!=0)
System.out.print(".");
System.out.print(resMin[j]);
}
System.out.print("\n");
for(int j=0;j<4;j++)
{
if(j!=0)
System.out.print(".");
System.out.print(resCover[j]);
}
System.out.print("\n");
}
}
}

UVA 1590 IP Networks JAVA的更多相关文章

  1. uva 1590 - IP Networks(IP地址)

    习题4-5 IP网络(IP Networks, ACM/ICPC NEERC 2005, UVa1590) 可以用一个网络地址和一个子网掩码描述一个子网(即连续的IP地址范围).其中子网 掩码包含32 ...

  2. Uva 1590 IP Networks

    这道题目是一道关于IP地址的题目,要深入理解这道题需要有一定的网络基础. 这道题目我第一次做的时候虽然也AC了,但代码写的比较复杂,不够精炼.近期刚刚参加了网络方面的培训,在有一定知识的基础上,又重写 ...

  3. UVa 1590 IP网络(简单位运算)

    Description   Alex is administrator of IP networks. His clients have a bunch of individual IP addres ...

  4. IP Networks UVA - 1590

     Alex is administrator of IP networks. His clients have a bunch of individual IP addresses and he de ...

  5. 位运算基础(Uva 1590,Uva 509题解)

    逻辑运算 规则 符号 与 只有1 and 1 = 1,其他均为0 & 或 只有0 or 0 = 0,其他均为1 | 非 也就是取反 ~ 异或 相异为1相同为0 ^ 同或 相同为1相异为0,c中 ...

  6. 海量日志数据提取某日访问百度次数最多的那个IP的Java实现

    海量日志数据提取某日访问百度次数最多的那个IP的Java实现 前几天在网上看到july的一篇文章<教你如何迅速秒杀掉:99%的海量数据处理面试题>,里面说到百度的一个面试题目,题目如下: ...

  7. [刷题]算法竞赛入门经典(第2版) 4-5/UVa1590 - IP Networks

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 代码:(Accepted,0 ms) //UVa1590 - IP Networks #include<iost ...

  8. IP和java.net.InetAddress类的使用

    一.IP 1.地址格式 互联网上每一台计算机都有一个唯一标示自己的标记,这个标记就是IP地址.IP 地址使用32 位长度二进制数据标示,一般在实际中看到的大部分IP地址都是以十进制的数据形式标示的,如 ...

  9. java检测http请求的ip地址 Java问题通用解决代码

    以后再用到的话,至少能起个参考作用 java实现,struts2的Action中,依赖HttpServletRequest     package net.dookoo.web.action;   i ...

随机推荐

  1. jsp 标签文件

    一. tag file 简介 tag file从两个方面简化了自定义标签的开发.首 先,tag file无须提前编译,直到第一次被调用才会编 译.除此之外,仅仅使用JSP语法就可以完成标签的扩 展定义 ...

  2. uva11754 中国剩余定理+暴力搜索

    是当y的组合数较小时,暴力枚举所有组合,然后用中国剩余定理求每种组合的解,对解进行排序即可 注意初始解可能是负数,所以如果凑不够S个,就对所有解加上M,2M.... 当y的组合数较大时,选择一个k/x ...

  3. noip 2018.10.14 模拟赛 砍树

    数学问题... 根据题意,有: 移项,整理,得: 记 于是 那么 可以看到,最多只会有2*个取值(显而易见) 于是对应的,可能产生效果的d也只会有个,于是我们把他们找出来,扔进一个数组里然后排序,去重 ...

  4. Jumpserver里常用的sudo权限控制模板

    ALL,!/bin/bash,!/bin/tcsh,!/bin/su,!/usr/bin/passwd,!/usr/bin/passwd root,!/bin/vim /etc/sudoers,!/u ...

  5. 反序列化json的坑

    json格式没有错误,内容没有什么异常 反序列化一直显示第一行有异常符号, 在https://jsonlint.com/上面检测了一下,发现了这个 解决办法: UTF-8格式编码 改成 UTF-8无B ...

  6. Nginx中配置undertow进行两个项目的动静分离配置

    #user nobody; worker_processes ; pid /var/run/nginx.pid; events { worker_connections ; } http { incl ...

  7. Vuex详解笔记2

    关于 state 每个vuex 应用只有一个 store 实例,所以使用起来不会太复杂,对于定位错误状态和操作会很方便. 简单用法:在vuex 的计算属性中返回vuex 的状态 最基本的使用方式,通过 ...

  8. 反射PropertyInfo的简单使用

    namespace EF6._0Test { class Program { /// <summary> /// PropertyInfo的简单使用 /// </summary> ...

  9. [转] css选择器中:first-child与:first-of-type的区别

    :first-child选择器是css2中定义的选择器,从字面意思上来看也很好理解,就是第一个子元素.比如有段代码: p:first-child  匹配到的是p元素,因为p元素是div的第一个子元素: ...

  10. 【BZOJ2067】[Poi2004]SZN

    题解: 比上一题水多了 首先树上贪心,肯定要考虑儿子 然后我们会发现这个东西就是要先把儿子连起来 然后如果儿子个数为奇数我们可以把这一条和它连向父亲的并在一起 由于根没有父亲所以要单独考虑 答案就是s ...