HDU2054(水题---这题有毒=_=)

来源:互联网 发布:实用电子产品知乎 编辑:程序博客网 时间:2024/05/16 10:03

题目大意:判断两个数是否相等。

思路:需要判断正负号以及前导0、小数点后面的0等等。。。

#include <cstdio>#include <algorithm>#include <cstring>#include <string>#include <iostream>#include <cmath>using namespace std;void del_1(string &str){    int flag1 = 0;    int flag2 = 0;    if(str[0] == '-')    {        flag1++;        flag2 = flag1;    }    while(str[flag1] == '0')        flag1++;    str.erase(flag2, flag1-flag2);}void del_2(string &str){    int len = str.length()-1;    while(str[len] == '0')        len--;    while(str[len] == '.')        len--;    str.erase(len+1);}int main(){    string a, b;    while(cin >> a >> b)    {        int len1 = a.length();        int len2 = b.length();        if(a[0] == '+')            a = a.substr(1, len1);        if(b[0] == '+')            b = b.substr(1, len2);        del_1(a);        del_1(b);        for(int i = len1; i >= 0; i--)        {            if(a[i] == '.')            {                del_2(a);                break;            }        }        for(int i = len2; i >= 0; i--)        {            if(b[i] == '.')            {                del_2(b);                break;            }        }        //cout<<a<<" "<<b<<endl;        if(a == b || (a[0] == '-') || (b[0] == '-'))            printf("YES\n");        else            printf("NO\n");    }    return 0;}


0 0
原创粉丝点击