HDU2054

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2054

一开始以为是道很简单的题,但交了几次WA,发现不简单。
得考虑以下几种情况:
1.所给的数很大,无法使用常规类型比较
2.小数化简
3.考虑正负号
4.正数前是否有多余的0(后发现实例并没有这种情况)

思路:
1.读取两个数字存入字符串a,b中
2.对于各字符串查找是否存在小数点,若存在则简化小数
3.对比两个处理后的字符串,输出答案

代码:


#include
#include

using namespace std;

int main()
{
    string a, b;
    while (cin >> a >> b)
    {
        int l = a.length();
        int ll = a.find('.');
        if (ll != -1)
        {
            for (int i = l - 1; i >= ll; i--)
            {
                if (a[i] == '0' || a[i] == '.')
                    a.erase(i, 1);
                else
                    break;
            }
        }
        l = b.length();
        ll = b.find('.');
        if (ll != -1)
            for (int i = l - 1; i >= ll; i--)
            {
                if (b[i] == '0' || b[i] == '.')
                    b.erase(i, 1);
                else
                    break;
            }
        a == b ? cout << "YES" << endl : cout << "NO" << endl;
    }
    return 0;
}

你可能感兴趣的:(HDU2054)