UVA 1590 IP Networks JAVA
题意:输入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的更多相关文章
- uva 1590 - IP Networks(IP地址)
习题4-5 IP网络(IP Networks, ACM/ICPC NEERC 2005, UVa1590) 可以用一个网络地址和一个子网掩码描述一个子网(即连续的IP地址范围).其中子网 掩码包含32 ...
- Uva 1590 IP Networks
这道题目是一道关于IP地址的题目,要深入理解这道题需要有一定的网络基础. 这道题目我第一次做的时候虽然也AC了,但代码写的比较复杂,不够精炼.近期刚刚参加了网络方面的培训,在有一定知识的基础上,又重写 ...
- UVa 1590 IP网络(简单位运算)
Description Alex is administrator of IP networks. His clients have a bunch of individual IP addres ...
- IP Networks UVA - 1590
Alex is administrator of IP networks. His clients have a bunch of individual IP addresses and he de ...
- 位运算基础(Uva 1590,Uva 509题解)
逻辑运算 规则 符号 与 只有1 and 1 = 1,其他均为0 & 或 只有0 or 0 = 0,其他均为1 | 非 也就是取反 ~ 异或 相异为1相同为0 ^ 同或 相同为1相异为0,c中 ...
- 海量日志数据提取某日访问百度次数最多的那个IP的Java实现
海量日志数据提取某日访问百度次数最多的那个IP的Java实现 前几天在网上看到july的一篇文章<教你如何迅速秒杀掉:99%的海量数据处理面试题>,里面说到百度的一个面试题目,题目如下: ...
- [刷题]算法竞赛入门经典(第2版) 4-5/UVa1590 - IP Networks
书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 代码:(Accepted,0 ms) //UVa1590 - IP Networks #include<iost ...
- IP和java.net.InetAddress类的使用
一.IP 1.地址格式 互联网上每一台计算机都有一个唯一标示自己的标记,这个标记就是IP地址.IP 地址使用32 位长度二进制数据标示,一般在实际中看到的大部分IP地址都是以十进制的数据形式标示的,如 ...
- java检测http请求的ip地址 Java问题通用解决代码
以后再用到的话,至少能起个参考作用 java实现,struts2的Action中,依赖HttpServletRequest package net.dookoo.web.action; i ...
随机推荐
- django之数据库表的单表查询
一.添加表记录 对于单表有两种方式 # 添加数据的两种方式 # 方式一:实例化对象就是一条表记录 Frank_obj = models.Student(name ="海东",cou ...
- Idea 12配置SPring MVC 和Tomcat Server
配置Spring 1. 添加idea插件 都选上了.也许有用! 2. 添加Spring库 下载spring,添加java库,指向spring库的目录: 配置tomcat Server 1. 安装tom ...
- python目录和文件的列表清单
import os # 通过给定的文件夹,列举出这个文件夹当中,所有的文件,以及文件夹,子文件夹当中的所有文件def listFilesToTxt(dir,file): # 1.列举出,当前给定的文件 ...
- 远程桌面管理工具Remote Desktop Connection Manager
使用说明:RDCMan安装好后双击打开RDCMan.exe,首次使用需要添加配置文件扩展名为rdg 1.点击File新建配置文件,这里命名为MRU,存放在安装的根路径下 建好之后,MRU会显示在左侧菜 ...
- NetCore 生成RSA公私钥对,公钥加密私钥解密,私钥加密公钥解密
using Newtonsoft.Json; using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Crypto.Encodings; using ...
- [转] js在浏览器端对二进制流进行AES加密和解密
开始解密 简单了解一下所用的的AES加密算法,我们用的是AES的CFB加密方式,服务端会提供给我一个key和iv的二进制字节串.密文也是二进制字节串. 我用的加密/解密插件: crypto-js 一般 ...
- es6 Proxy
proxy在语言层面去操作一个对象 var user={}; user.fname='Bob'; user.lname="Wood"; user.fullName= functio ...
- Multi-Fiber Networks for Video Recognition (MFNet)
Motivation:减少时空网络的计算量,保持视频分类精度的基础上,使速度尽可能接近对应网络的2D版本. 为此提出 Multi-Fiber 网络,将复杂网络拆分成轻量网络的集成,利用 fibers ...
- 基于bootstrap的jQuery多级列表树插件 treeview
http://www.cnblogs.com/mfc-itblog/p/5233453.html http://www.htmleaf.com/jQuery/Menu-Navigation/20150 ...
- 【Arduino】Arduino接收字符串
[Arduino]Arduino接收字符串 相关文章 [Arduino]开发入门[十]Arduino蓝牙模块与Android实现通信 在[Arduino]开发入门[十]Arduino蓝牙模块与Andr ...