代码改变世界

HDU——2054 A == B ?

2009-05-06 04:02  Logic0  阅读(1192)  评论(0编辑  收藏  举报
我顶 字号:

http://acm.hdu.edu.cn/showproblem.php?pid=2054

说实话是道比较考验对库函数熟悉度的问题。

通过这个问题发现自己在某些函数的应用上还存在不少问题。

最汗颜的就是,居然不知道string.erase(iterator i),之后i自增1的!导致删除总不干净。

简单题,对库函数熟悉的话代码很短。由于题意很模糊,而且例子也很弱,所以很多人估计走了弯路,成功率11%多点。

CODE:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void del_0_after_point(char *s)
{
   int len = strlen(s);
   char *p = s+len-1;
   if(strchr(s,'.'))
        while(*p =='0')
            *p-- = '\0';
   if(*p == '.')
        *p = '\0';    
}
int main()
{
    char a[100024],b[100024];
    char *a_x,*b_x;
    while(scanf("%s%s",a,b) != EOF)
    {
        a_x = a;
        b_x = b;
        while(*a_x == '0')
            a_x ++;
        while(*b_x == '0')
            b_x ++;
        del_0_after_point(a);
        del_0_after_point(b);
        puts(strcmp(a_x,b_x)==0?"YES":"NO");
    }
    return 0;
}

换成了纯C的代码,不好意思用STL丢人。

有助于扎实基础的好题!