A == B ?

Problem Description
Give you two numbers A and B, if A is equal to B, you should print "YES", or print "NO".
 

Input
each test case contains two numbers A and B.
 

Output
for each case, if A is equal to B, you should print "YES", or print "NO".
 

Sample Input
  
1 2 2 2 3 3 4 3
 

Sample Output
  
NO YES YES NO
 

Author
8600 && xhd
 

Source
 

Recommend

linle   |   We have carefully selected several similar problems for you:   2052  2055  2053  2056  2051 

分析:
本题涉及到大数及小数点问题,故不能简单比较。
超时代码:
#include<stdio.h>
#include<string.h>	
char a1[15000],a2[15000],b1[15000],c1[15000],b2[15000],c2[15000];
int main()
{
	int p1,p2,j,l,t1,i,t2,m1,m2,q1,q2;
	while(scanf("%s%s",a1,a2))
	{
		j=0;l=0;
		m1=m2=0;
		p1=strlen(a1);
		p2=strlen(a2);
		for(i=0;i<p1;i++)
		if(a1[i]=='.')
		{
			m1=1;break;
		}
		//printf("%d\n",m1); 
		if(m1==0)
		{
			for(i=0;i<p1;i++)
			b1[j++]=a1[i];
			b1[j]='\0';
		//	for(i=0;i<j;i++)
	     //  printf("%c",b1[i]);
		}
		else {
		 for(i=p1-1;i>=0;i--)
		 if(a1[i]!='0')
		 {
		  t1=i;	
		  break;
	     }
		if(a1[t1]=='.')
		{
			for(i=0,j=0;i<=t1-1;i++)
			b1[j++]=a1[i];
			b1[j]='\0';
			//	for(i=0;i<t1-1;i++)
	       //printf("%c",b1[i]);
	       //printf("1\n");
		}
		else{
			for(i=i-1;a1[i]!='.';i--)
			b1[j++]=a1[i];
			b1[j]='\0';
			for(i=i-1;i>=0;i--)
			c1[l++]=a1[i];
			c1[l]='\0';
		//	for(i=0;i<l;i++)
		//	printf("%c",c1[i]);
	    }
	     } 
	     
	     for(i=0;i<p2;i++)
		if(a2[i]=='.')
		{
			m2=1;break;
		}
		if(m2==0)
		{
			
			for(i=0,j=0;i<p2;i++)
			b2[j++]=a2[i];
			b2[j]='\0';
			//for(i=0;i<j;i++)
	       //printf("%c",b2[i]);
		}
		else {
			j=0;
		 for(i=p2-1;i>=0;i--)
		 if(a2[i]!='0')
		 {
		  t2=i;	
		  break;
	     }
		if(a2[i]=='.')
		{
			q2=i;
			for(i=0,j=0;i<=q2-1;i++)
			b2[j++]=a2[i];
			b2[j]='\0';
			 //for(i=0;i<j;i++)
	       // printf("%c",b2[i]);
		}
		else{
			for(i=i-1,j=0;a2[i]!='.';i--)
			b2[j++]=a2[i];
			b2[j]='\0';
			for(i=i-1,l=0;i>=0;i--)
			c2[l++]=a2[i];
			c2[l]='\0';
	    }
	     } 
		if(strcmp(b1,b2)==0&&strcmp(c1,c2)==0)
		printf("YES\n");
		else printf("NO\n");	
	}
	return 0;
}
此代码开拓出四个数组存储。但属超时代码!!!!!
故又换一种方法。
ac代码:
#include <stdio.h>
#include <string.h>
char a[150000],b[150000];
void f(char *s)
{
	int lens;
	lens=strlen(s);
	if(strchr(s,'.')!=NULL)
	{
		while(s[--lens]=='0') ;
		if(s[lens]=='.') lens--;
		s[lens+1]='\0';
	}
}
int main()
{
	while(scanf("%s%s",a,b)==2)
	{
		f(a);
		f(b);
		if(strcmp(a,b)==0) printf("YES\n");
		else printf("NO\n");
	}
	return 0;
}








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值