HDU2054 A==B?(判等 全面考虑)

题目大意:

       给出两个数AB,问A,B是否相等

题解:

     与一般的判断大小的区别是要考虑小数点的情况(因为这可能是大数,所以要当做字符串来读)

可能的情况

①1.99999999999999999999999999999999999999999999

2(这组数据解释了为什么要有字符串来输入)

②1.300

1.3(这组数据解释了为什么要在把字符串的结尾符'\0'改为'0'

③1.0000

1(这组数据解释了为什么要在把'.'改为'0'

考虑给出的这三种情况就对了。

#include<iostream>
#include<stdio.h>
#include<cstring>
using namespace std;
char x[100020],y[100020];
void doit(char s[])
{

    int l=strlen(s),p(0);
    for(int i=0;i<l;i++)
        if(s[i]=='.')
    {
        p=1;
        break;
    }
    if(p)
    {
     for(int i=l-1;i>=0;i--)
        if(s[i]!='0')break;else s[i]='\0';
    l=strlen(s);
    if(s[l-1]=='.')s[l-1]='\0';
    }
}

int main()
{
    while(cin>>x>>y)
    {
        doit(x);doit(y);
        if(strcmp(x,y)==0)cout<<"YES\n";else cout<<"NO\n";
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值