Blog·Tanky WooABOUTRSS

HDOJ 2054 A == B ?

18 Jul 2010
这篇博客是从旧博客 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;
}