这篇博客是从旧博客 WordPress 迁移过来,内容可能存在转换异常。
细心,细心,再细心!
其次,把数组要设置大点,我现开始设置100就WA了,改成1000又WA,最后改成100000就AC了。
给几个测试数据:
010.00 10 YES
010. 10.00000000 YES
010.00 01000 NO
前导0,后导0,标点'.'都要去掉再比较,注意只有在有标点'.'时才能去掉后导0.
#include
#include
#include
using namespace std;
// Author: Tanky Woo
// HDOJ 2054
// 终于AC了!
char a[100000], b[100000];
char *pa, *pb;
int main()
{
while(scanf("%s %s", a, b) != EOF)
{
// 去掉.以后最后多余的0
int len1= strlen(a);
int len2 = strlen(b);
char *ptr1 = strchr(a, '.');
char *ptr2 = strchr(b, '.');
pa = a+len1-1;
pb = b+len2-1;
// 注意考虑有无小数点,没小数点后面的0就不能删除了!
if(ptr1 < pa && ptr1 != NULL)
while(*pa == '0')
*pa-- = 0;
if(ptr2 < pb && ptr2 != NULL)
while(*pb == '0')
*pb-- = 0;
if(*pa == '.')
*pa = 0;
if(*pb == '.')
*pb = 0;
pa = a, pb = b;
// 去掉前置的0
while(*pa == '0')
pa++;
while(*pb == '0')
pb++;
if(strcmp(pa, pb) == 0)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}