A == B ?
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 83216 Accepted Submission(s): 13071
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
卡了很长时间的题了,要考虑很多种情况,感谢大牛数据!
测试数据 -00001==-1 -0==0 10.000==10 00010==10 10.==10 */
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char s1[100100],s2[100100];
int main()
{
int len1,len2,m,n,a,b,i,j,flag1,flag2,t,f1,f2;
while(scanf("%s%s",s1+1,s2+1)!=EOF)
{
len1=strlen(s1+1);
len2=strlen(s2+1);
flag1=flag2=f1=f2=0;
if(s1[0]=='-')
flag1=1;
if(s2[0]=='-')
flag2=1;
s1[0]='\0';
s2[0]='\0';
for(i=1;i<=len1;i++)
{
if(s1[i]=='.')
f1=1;
}
for(i=1;i<=len2;i++)
{
if(s2[i]=='.')
f2=1;
}
for(i=1;i<=len1;i++)
{
if(s1[i+1]=='.'||(s1[i]>'0'&&s1[i]<='9'))
break;
}
j=len1;
if(f1)
for(;s1[j]=='0'&&j>=0;j--)
;
if(s1[j]=='.')
j--;
t=0;
for(a=i;a<=j;a++)
s1[t++]=s1[a];
s1[t]='\0';
for(i=1;i<=len2;i++)
{
if(s2[i+1]=='.'||(s2[i]>'0'&&s2[i]<='9'))
break;
}
j=len2;
if(f2)
for(;s2[j]=='0'&&j>=0;j--)
;
if(s2[j]=='.')
j--;
t=0;
for(a=i;a<=j;a++)
s2[t++]=s2[a];
s2[t]='\0';
if((flag1+flag2)%2==0&&strcmp(s1,s2)==0)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}