杭电OJ 2054 A==B?

A==B?

题目只要你判断数字A是否等于B,傻子都知道肯定不是int数据类型可以存下的,A可能有1000位,要用字符串类型存储,比较的时候注意\(0001\)\(001\)\(1\)都是一样的,即前导零不算

好吧,题目只说了number,没说是整数呀

分析:
比较前,先去掉前面多余的0,再去小数点后面多余的0(首先要保证有小数点)。最后,如果小数点后面所有的数都去的掉了,还要同时去掉小数点。

#include <iostream>
#include <cstdio>
#include <string>

using namespace std;

void ClearZero(string &str) {
    int i;
    for(i = 0; i < str.size(); ++i) {
        if(str[i] != '0') {
            break;
        }
    }
    if(str[i] == '.') {
        str.erase(0, i - 1);
    } else {
        str.erase(0, i);
    }
    
    for(i = 0; i < str.size(); ++i) {
        if(str[i] == '.')
            break;
    }
    if(i != str.size()) {//说明有小数点
        int j;
        for(j = str.size() - 1; j > i; --j) {
            if(str[j] != '0') {
                break;
            }
        }
        if(j == i) {
            str.erase(i);
        } else {
            str.erase(j + 1);
        }    
    }
}

int main()
{
    string a, b;
    while(cin >> a >> b) {
        ClearZero(a);
        ClearZero(b);
        if(a == b) {
            cout << "YES" << endl;
        } else {
            cout << "NO" << endl;
        }
    }
    return 0;
}
posted @ 2024-03-12 11:37  paopaotangzu  阅读(47)  评论(0)    收藏  举报