HDU2054---A==B?

#include <stdio.h>
#include <string.h>
const int MAX = 100010;//取太小过不了 
int main()
{
	char a[MAX]={},b[MAX]={};
	while(~scanf("%s %s",a,b)){
		int i=0,j=0,f=1;
		int p=strlen(a),q=strlen(b);
		int flag = 0;//标记是否含有小数点
		
		for(i=0;i<p;i++)
			if(a[i]=='.')
			{
				flag = 1;
				break;
			}
		i = 0;
		p--;
		while(a[i]=='0')//A中从前往后找到第一个非零位置i
			i++;
		if(flag)//A中如果存在小数点,从后往前找到第一个非零位置
		{
			while(a[p]=='0'){
				p--;
			}
		}
		if(a[p]=='.')//A中如果第一个非零位置是“.”,再前移一位
			p--;
		/*同A*/
		flag = 0;
		for(j=0;j<q;j++)
			if(b[j]=='.')
			{
				flag = 1;
				break;
			}
		j = 0;
		q--;
		while(b[j]=='0')
			j++;
		if(flag)
		{
			while(b[q]=='0'){
				q--;
			}
		}
		if(b[q]=='.')
			q--;
		if(p-i!=q-j)//如果A和B的字符长度不同,则A!=B,标记f = 0
			f=0;
		for(;i<=p&&j<=q;i++,j++)
		{
			if(a[i]!=b[j])//如果A和B相应位置的字符不同,则A!=B,标记f = 0
			{
				f=0;
				break;
			}
		}
		if(f)
			printf("YES\n");
		else
			printf("NO\n");
			
		memset(a,0,MAX*sizeof(char));
		memset(b,0,MAX*sizeof(char));
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/xuzailin/article/details/54879595