HDU2206 IP的计算 【经典题】

IP的计算

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 7479    Accepted Submission(s): 1457

Problem Description

在网络课程上,我学到了非常多有关IP的知识。IP全称叫网际协议。有时我们又用IP来指代我们的IP网络地址,如今IPV4下用一个32位无符号整数来表示。一般用点分方式来显示。点将IP地址分成4个部分,每一个部分为8位。表示成一个无符号整数(因此不须要用正号出现)。如192.168.100.16,是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(由于要表示成一个32数字)。

可是粗心的我,经常将IP地址写错。如今须要你用程序来推断。

Input

输入有多个case,每一个case有一行,不超过100个字符。

Output

对于每一个case。推断输入的IP是否正确,假设正确输入YES。否则NO。

Sample Input

192.168.100.16

Sample Output

YES

合法的IP必然满足下面:

1、字符仅仅包括0-9和‘.’。

2、有且仅仅有3个‘.’。

3、每格数字最多3位且不超过255;

4、两个‘.’不能连在一起;

5、第一个字符不是‘.’.

#include <stdio.h>
char str[102];
int ok;

int check(char ch){
	if(ch >= ‘0‘ && ch <= ‘9‘) return 1;
	if(ch == ‘.‘) return 2;
	return 0;
}

int main(){
	int dot, dignum, a, dotsum;
	while(gets(str)){
		dotsum = a = dot = dignum = 0;
		for(int i = 0; str[i]; ++i){
			ok = check(str[i]);
			if(!ok) break;
			if(ok == 1){
				dot = 0;
				++dignum;
				a = a * 10 + str[i] - ‘0‘;
				if(dignum > 3 || a > 255){
					ok = 0; break;
				}
			}else{
				dignum = a = 0;
				++dot; ++dotsum;
				if(dot > 1 || dotsum > 3){
					ok = 0; break;
				}
			}
		}
		if(str[0] == ‘.‘ || dot || dotsum != 3) ok = 0;
		printf(ok ? "YES\n" : "NO\n");
	}
	return 0;
}
时间: 2024-10-12 03:09:46

HDU2206 IP的计算 【经典题】的相关文章

hdu 1541/poj 2352:Stars(树状数组,经典题)

Stars Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4052    Accepted Submission(s): 1592 Problem Description Astronomers often examine star maps where stars are represented by points on a plan

hdu 2206 IP的计算 模拟

IP的计算 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 7980    Accepted Submission(s): 1570 Problem Description 在网络课程上,我学到了很多有关IP的知识.IP全称叫网际协议,有时我们又用IP来指代我们的IP网络地址,现在IPV4下用一个32位无符号整数来表示,一般用点分方式来

nyist oj 311 全然背包 (动态规划经典题)

全然背包 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描写叙述 直接说题意,全然背包定义有N种物品和一个容量为V的背包.每种物品都有无限件可用.第i种物品的体积是c,价值是w. 求解将哪些物品装入背包可使这些物品的体积总和不超过背包容量,且价值总和最大.本题要求是背包恰好装满背包时,求出最大价值总和是多少. 假设不能恰好装满背包,输出NO 输入 第一行: N 表示有多少组測试数据(N<7). 接下来每组測试数据的第一行有两个整数M.V. M表示物品种类的数目,V表示背

hdu 3657 最小割的活用 / 奇偶方格取数类经典题 /最小割

题意:方格取数,如果取了相邻的数,那么要付出一定代价.(代价为2*(X&Y))(开始用费用流,敲升级版3820,跪...) 建图:  对于相邻问题,经典方法:奇偶建立二分图.对于相邻两点连边2*(X&Y),源->X连边,Y->汇连边,权值w为点权. ans=总点权-最小割:如果割边是源->X,表示x不要选(是割边,必然价值在路径上最小),若割边是Y-汇点,同理:若割边是X->Y,则表示选Y点且选X点, 割为w( 2*(X&Y) ). 自己的确还没有理解其本质

poj2105 IP Address(简单题)

题目链接:http://poj.org/problem?id=2105 Description Suppose you are reading byte streams from any device, representing IP addresses. Your task is to convert a 32 characters long sequence of '1s' and '0s' (bits) to a dotted decimal format. A dotted decima

POJ 2411 &amp;&amp; HDU 1400 Mondriaan&#39;s Dream (状压dp 经典题)

Mondriaan's Dream Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 12341   Accepted: 7204 Description Squares and rectangles fascinated the famous Dutch painter Piet Mondriaan. One night, after producing the drawings in his 'toilet series

hdu 3879 hdu 3917 构造最大权闭合图 俩经典题

hdu3879  base station : 各一个无向图,点的权是负的,边的权是正的.自己建一个子图,使得获利最大. 一看,就感觉按最大密度子图的构想:选了边那么连接的俩端点必需选,于是就以边做点,轻轻松松构造了最大权闭合图.简单题.分分钟搞定. hdu3917 :road  constructions :这题题目看了半天没理解...感觉描述的不好...一个有向图,每条路有响应公司承保,若选了该公司,那么该公司的路必需全部选,还有,该公司的承保的路的下面的一条路对应公司也要选,求最大获利.构

poj 1006:Biorhythms(水题,经典题,中国剩余定理)

Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 110991   Accepted: 34541 Description Some people believe that there are three cycles in a person's life that start the day he or she is born. These three cycles are the physical,

hdu 1247:Hat’s Words(字典树,经典题)

Hat's Words Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 7282    Accepted Submission(s): 2639 Problem Description A hat's word is a word in the dictionary that is the concatenation of exactly