A == B ?
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 73311 Accepted Submission(s): 11575
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
这题的解题思路受到讨论群的一个代码的启发,没有讨论分各种情况判断。而是将
字符串的前导零,后导零,以及不接具体小数位的
后导小数点去除,再直接用strcmp函数对两个字符串经行比较。
但是HDOJ的测试数据太水,不考虑前导也能AC。
完美AC代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 100100//数组一定要开足够大,因为开小了,WA了两次
char str1[MAX],str2[MAX];
void cleanzero(char str[])
{
int len,i;
len=strlen(str);
if(strstr(str,"."))//去除后导零及不跟小数位的后导小数点
{
for(i=len-1;str[i]=='0';i--)
str[i]='\0';
if(str[i]=='.')
str[i]='\0';
}
if(str[0]=='0')//去除前导零
{
while(str[0]=='0')
{
for(i=0;i<len-1;i++)
str[i]=str[i+1];
str[len-1]='\0';
len--;
}
}
}
int main()
{
while(scanf("%s%s",str1,str2)!=EOF)
{
cleanzero(str1);
cleanzero(str2);
if(strcmp(str1,str2))//比较两个字符
printf("NO\n");
else
printf("YES\n");
}
return 0;
}