题意:输入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. Django Admin的相关知识

    一.面向对象复习 1.类的继承 class Base(object): def __init__(self,val): self.val = val def func(self): self.test ...

  2. dbcp连接池出现的问题java.lang.AbstractMethodError: com.mysql.jdbc.Connection.isValid(I)Z

    解决方案:mysql-connector 版本为 5.0.4 ,那么对应的 dbcp 和 pool 版本应该为 1.4 和 1.6 .    5.0.4 不应该使用 2.0 及以上版本的 dbcp 和 ...

  3. ruby安装sass和compass步骤

    依赖ruby,所以需要安装Ruby 如何安装Ruby呢?在windows下通过RubyInstaller来安装,安装过程中需要选择第二项 1.ruby -v 2.gem install sass (如 ...

  4. vue指令问题

    挂载点:最外层标签就是vue实例的挂载点,即id或者类对应的 dom节点 模板:指挂载点内部的内容,在实例里使用template标签来构 建 h1标签放在body里面不使用 “template”是一样 ...

  5. NodeJs——router报错原因

    rout.js var http = require('http'); var url = require('url'); var router = require('./models/router. ...

  6. 天财商龙SQL查询ID登陆POS情况

    SELECT * FROM [tcgem_client0001].[dbo].[TCB_POS] ' --查询ID登陆POS情况

  7. java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息

    1.java使用Jsch实现远程操作linux服务器进行文件上传.下载,删除和显示目录信息. 参考链接:https://www.cnblogs.com/longyg/archive/2012/06/2 ...

  8. 网页前端 html js 相关

    1.注释 1.1HTML 注释 http://www.w3school.com.cn/html/html_comments.asp 注释标签 <!-- 与 --> 用于在 HTML 插入注 ...

  9. nginx 设置自签名证书以及设置网址http强制转https访问

    自签名证书可以在自己的内网环境或者非对外环境使用,保证通信安装 1.生产证书 直接使用脚本生产: 中途会提示书如1次域名和4次密码,把一下文件保存为sh文件,赋予x权限后 直接执行,根据提示输入. # ...

  10. websocket/dwebsocket 实现前后端的实时通信

    1.  用bottle框架,自己写一个服务端实现: 转载   :http://www.linuxyw.com/813.html 功能:用websocket技术,在运维工具的浏览器上实时显示远程服务器上 ...