acm-A-B Problem

A-B Problem

时间限制: 1000  ms  内存限制: 65535  KB
难度: 3
描述

A+B问题早已经被大家所熟知了,是不是很无聊呢?现在大家来做一下A-B吧。

现在有两个实数A和B,聪明的你,能不能判断出A-B的值是否等于0呢?

输入
有多组测试数据。每组数据包括两行,分别代表A和B。
它们的位数小于100,且每个数字前中可能包含+,- 号。
每个数字前面和后面都可能有多余的0。
每组测试数据后有一空行。
输出
对于每组数据,输出一行。
如果A-B=0,输出YES,否则输出NO。
样例输入
1
1

1.0
2.0
样例输出
YES
NO
来源
hdu改编
代码:
#include
#include
using namespace std;
int main()
{
  char s[2][110]={0},*p[2],r;
  int i,j,k,n[2];
  while(cin>>s[0]>>s[1])
  {
    for(i=0;i<2;i++)
    {
      j=0;    //指示整数部分第一个非零数的位置
      n[i]=1;      //1表示是正数,0表示是负数
      r=s[i][0];
      if(r=='+')
      {
        j=1;      //有符号位
      }
      elseif(r=='-')
      {
        j=1;      //有符号位
        n[i]=-1;    //表示该数为负数
      }
      while(s[i][j]=='0')j++;  //找到第一个非零位
      p[i]=&s[i][j];
      if(strstr(s[i],"."))
      {
        k=strlen(s[i])-1;
        while(s[i][k]=='0')s[i][k--]=0;    //从小数后半部分开始寻找第一个非零位,并将为0的赋值为‘\0’
        if(s[i][k]=='.')
        {
          s[i][k]=0; 
        }
      }
    }
    r=0;
    if(!p[0][0]&&!p[1][0])
      r=1;
    elseif(!strcmp(p[0],p[1])&&n[0]*n[1]>0)
      r=1;
    if(r)  cout<<"YES"<<endl;
    else  cout<<"NO"<<endl; 
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值