hdu 2045

这题不难,没有涉及算法。主要是熟练了一下指针。主要思想就是,设定一个规范模式,然后朝着这个规范模式化解,代码可以优化,有许多冗余 的地方。

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn=1000000;
char sa[maxn],sb[maxn];
int main()
{
	while(scanf("%s %s",sa,sb)!=EOF)
	{
		getchar();
		int len1=strlen(sa),len2=strlen(sb);
		char * a=sa;
		char * b=sb;
		char * ta=a+len1-1;
		char * tb=b+len2-1;
		if(a[0]=='-'||b[0]=='-')
		{
			if(a[0]!=b[0])
			{
				cout<<"NO"<<endl;
				continue;
			}
			else
			{
				a++;
				b++;
			}
		}
		while(*a=='0') a++;
		while(*b=='0') b++;
		if(*a=='.'||*a=='\0') 
		{
			a--;
			*a='0';
		}
		if(*b=='.'||*b=='\0')
		{
			b--;
			*b='0';
		}
		char * aa=a;
		char * bb=b;
		int flag1=0,flag2=0;
		while(*aa!='\0') 
		{
			if(*aa=='.')
			{
				flag1=1;
				break;
			}
			aa++;
		}
		while(*bb!='\0') 
		{
			if(*bb=='.')
			{
				flag2=1;
				break;
			}
			bb++;
		}
		if(flag1)
		{
			while(*ta=='0'&&*ta!='.')
				ta--;
			if(*ta=='.') *ta='\0';
			else *(ta+1)='\0';
		}
		if(flag2)
		{
			while(*tb=='0'&&*tb!='.') tb--;
			if(*tb=='.') *tb='\0';
			else *(tb+1)='\0';
		}
		if(strcmp(a,b)==0) cout<<"YES"<<endl;
		else cout<<"NO"<<endl;
	}
	return 0;
}
		


posted @ 2013-01-03 17:12  LJ_COME!!!!!  阅读(122)  评论(0编辑  收藏  举报