杭电oj----2054 A == B ?

判断两个数是否相等,这题坑会比较多,而且给的数值超过64位,所以要用字符串解决问题。

然后大概有这些坑:
1.给的样例前可能有无意义的0,例如002 02;
2.可能存在小数点,且小数点的数结尾可能存在无意义的0,例如2.00 2.0;
3.可能会有负数,要考虑符号问题,应该没有加号,反正我没考虑;
4.-0和0是相等的;
5.用字符串的存储数的时候要把字符串开到50000之多,否则会报错。

差不多就这些坑,,,

下面是代码:(可能比较繁琐,但是我懒得改了(……))

#include
#include
int main()
{
	int a,b,c,d,m,n,t,i,o,p,q,u,v;
	char A[50000],B[50000];
	while(~scanf("%s%s",A,B))
	{
		c=0,d=0;
		a=strlen(A);
		b=strlen(B);
		for(i=0;i=c;i--)
			{
				if(A[i]!='0')break;
				a--;
			}
		}
		v=0;
		for(i=d;i=d;i--)
			{
				if(B[i]!='0')break;
				b--;
			}
		}
		if(u==1&&v==0)
		{
			b++;
			B[b-1]='.';
		}
		if(u==0&&v==1)
		{
			a++;
			A[a-1]='.';
		}
		n=0,m=0,t=0;
		for(i=c;i='0'&&A[i]<='9')n=1;
		}
		for(i=d;i='0'&&B[i]<='9')m=1;
		}
		if(n==0&&m==0)
		{
			printf("YES\n");
			t=1;
		}
		if(t==0)
		{
			p=1;
			if((A[0]=='-'&&B[0]!='-')||(B[0]=='-'&&A[0]!='-'))
			{
				printf("NO\n");
				p=0;
			}
			if(p==1)
			{
				q=1;
				if(c-a!=d-b)
				{
					printf("NO\n");
					q=0;
				}
				if(q==1)
				{
					o=1;
					for(i=c;i

你可能感兴趣的:(ACM)