hdu 2054

A == B ?


Problem Description
Give you two numbers A and B, if A is equal to B, you should print "YES", or print "NO".
 

Input
each test case contains two numbers A and B.
 

Output
for each case, if A is equal to B, you should print "YES", or print "NO".
 

Sample Input
 
 
1 22 23 34 3
 
Sample Output
 
 
NOYESYESNO
 
/*
分析 : 输入两个数A 、B 判断两个数是否相等。
        未给数据范围 所以我们应该考虑用字符串存储来处理它们
        因为题目可能会出前导零 后导零的情况 而且最前面可能会有‘+’ ‘-’
        例如 001 与 0001 这两个是相等的
             001.00000 与 1 也是相等的
             +001.000 与 1 相等
             +1 与 -1 不相等
        所以我先找出小数点的位置
           temp=a.find('.');0~temp 与 temp~a.length();
              分别扫一遍,进行处理字符串。
        然后进行比较即可。
*/
#include <cstdio>
#include <cstring>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <string>
#include <cstdlib>
using namespace std;
string a,b;
void work(string a,string b,int len1,int len2)
{
    int temp1=a.find('.'),temp2=b.find('.');
    int i,j,k;
    int front_zero_1=0,back_zero_1=0;
    if(temp1!=-1)//有逗号
    {
        for(i=0;i<temp1-1;i++)
        {
            if(a[i]=='+'||a[i]=='-') continue;
            if(a[i]!='0') break;
            if(a[i]=='0')
            {
                front_zero_1=1;
            }
        }
        if(front_zero_1==1)
        {
            if(a[0]=='+'||a[0]=='-') a.erase(a.begin()+1,a.begin()+i);
            else a.erase(a.begin(),a.begin()+i);
        }
        temp1=a.find('.');
        len1=a.length();
        for(i=len1-1;i>temp1;i--)
        {
            if(a[i]!='0') break;
            if(a[i]=='0')
            {
                back_zero_1=1;
                continue;
            }
        }
        if(back_zero_1) a.erase(a.end()-len1+i+1,a.end());
    }
    else
    {
        for(i=0;i<len1;i++)
        {
            if(a[i]=='+'||a[i]=='-') continue;
            if(a[i]!='0') break;
            if(a[i]=='0')
            {
                front_zero_1=1;
                continue;
            }
        }
        if(front_zero_1)
        {
            if(a[0]=='+'||a[0]=='-') a.erase(a.begin()+1,a.begin()+i);
            else a.erase(a.begin(),a.begin()+i);
        }
    }
    int front_zero_2=0,back_zero_2=0;
    if(temp2!=-1)//有逗号
    {
        for(i=0;i<temp2-1;i++)
        {
            if(b[i]=='+'||b[i]=='-') continue;
            if(b[i]!='0') break;
            if(b[i]=='0')
            {
                front_zero_2=1;
                continue;
            }
        }
        if(front_zero_2)
        {
            if(b[0]=='+'||b[0]=='-') b.erase(b.begin()+1,b.begin()+i);
            else b.erase(b.begin(),b.begin()+i);
        }
        temp2=b.find('.');
        len2=b.length();
        for(i=len2-1;i>temp2;i--)
        {
            if(b[i]!='0') break;
            if(b[i]=='0')
            {
                back_zero_2=1;
                continue;
            }
        }
        if(back_zero_2) b.erase(b.end()-len2+i+1,b.end());
    }
    else
    {
        for(i=0;i<len2;i++)
        {
            if(b[i]=='+'||b[i]=='-') continue;
            if(b[i]!='0') break;
            if(b[i]=='0')
            {
                front_zero_2=1;
                continue;
            }
        }
        if(front_zero_2)
        {
            if(b[0]=='+'||b[0]=='-') b.erase(b.begin()+1,b.begin()+i);
            else b.erase(b.begin(),b.begin()+i);
        }
    }
    if(a.find('.')+1==a.length()) a.erase(a.find('.'));
    if(b.find('.')+1==b.length()) b.erase(b.find('.'));
    if(a[0]=='+') a.erase(a.begin());
    if(b[0]=='+') b.erase(b.begin());
    //cout<<front_zero_1<<" "<<front_zero_2<<endl;
    //cout<<back_zero_1<<" "<<back_zero_2<<endl;
    //cout<<a<<endl;
    //cout<<b<<endl;
    if(a==b) puts("YES");
    else puts("NO");
}
int main()
{
    while(cin>>a>>b)
        work(a,b,a.length(),b.length());
    return 0;
}



 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值