zzulioj--1874--蛤玮学计网(模拟)

1874: 蛤玮学计网

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 857   Solved: 121

Submit Status Web Board

Description

蛤玮最近学习了关于ip的知识,于是他迫不及待的想把新知识传授给她的妹子.蛤玮的妹子随便写下了一个字符串,蛤玮现在要告诉她这个字符串是不是一个合法的ip地址.
为简单考虑,仅考虑ipv4的情况,即合法ip为形同"a1.a2.a3.a4",且0<=ai<=255。

Input


第一行为一个整数T(1<=T<=20),代表数据组数。接下来T行每行一个字符串,其中不包含空格,Tab以及回车,长度不超过50。

Output

若合法,输出"Yes",否则输出"No"(不包含引号)。

Sample Input

210.105.240.51f.a.t.e

Sample Output

YesNo

HINT


我们认为010.105.240.051是合法的。
模拟水题。但是条件很多,当时比赛幸亏是给队友了,要不然肯定GG啊,模拟真不行
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char s[2000];
bool f;
bool work()
{
	int l=strlen(s);
	int cnt=0,na=0;
	if(s[0]=='.'||s[l-1]=='.') return false;
	for(int i=0;i<l;)
	{
		if(s[i]=='.')
		{
			cnt++;i++;
			continue;
		}
		int nb=0,sum=0;
		if(s[i]<'0'||s[i]>'9')
		return false;
		while(s[i]>='0'&&s[i]<='9'&&i<l)
		{
			sum=sum*10+s[i]-'0';
			i++;
			nb++;
		}
		na++;
		if(sum>255||sum<0||nb>3)
		return false;
	}
	if(cnt!=3||na!=4) return false;
	return true;
}
int main()
{
	int t;
	scanf("%d",&t);
	getchar();
	while(t--)
	{
		memset(s,'\0',sizeof(s));
		gets(s);
		if(work())
			printf("Yes\n");
		else
			printf("No\n");
	}
	return 0;
}



你可能感兴趣的:(zzulioj--1874--蛤玮学计网(模拟))