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

#include <iostream>
#include <cstdlib>
using namespace std;

int delete_Start_Zero(const string s,const int i)//去除前置0
{
  int index=i;
  while(index<s.length()&&s[index]=='0')
  ++index;
  if(index==s.length()||s[index]=='.')//保留小数点前面的一个0
  --index;
  return index;
}

int delete_End_Zero(const string s,const int i)//去除后置0
{
  int j=i-1;
  for(;j>=0;--j)
    if(s[j]!='0')
      break;
  if(s[j]=='.')//保留小数点后的一个0
    return j+1;
  else
    return j;
}

bool substraction(const string s1,const string s2)
{
  int start_1=delete_Start_Zero(s1,1);//s1有效数字的起始位置
  int end_1=delete_End_Zero(s1,s1.length());//s1有效数字的结束位置
  int start_2=delete_Start_Zero(s2,1);//s2有效数字的起始位置
  int end_2=delete_End_Zero(s2,s2.length());//s2有效数字的结束位置

  if((s1[0]=='+'&&s2[0]=='-')||(s1[0]=='-'&&s2[0]=='+'))//符号相反只有都是0结果才可能为0
    if(s1.substr(1,3)=="0.0"&&s2.substr(1,3)=="0.0")
      return true;
    else
      return false;
  else if((s1[0]=='+'&&s2[0]=='+')||(s1[0]=='-'&&s2[0]=='-'))//符号相同数字一样才为0
    if(s1.substr(start_1,end_1-start_1+1)==s2.substr(start_2,end_2-start_2+1))
      return true;
    else
      return false;
}

int main()
{
  string s1,s2;
  while(cin>>s1>>s2)
  {
    if(isdigit(s1[0]))//如果第一位没有符号且是数字,则为正数
      s1="+"+s1;
    if(isdigit(s2[0]))
      s2="+"+s2;
    if(s1.find('.')==-1)//把正数也当做小数来处理,
      s1.append(".0");
    if(s2.find('.')==-1)
      s2.append(".0");
    if(substraction(s1,s2))
      cout<<"YES"<<endl;
    else
      cout<<"NO"<<endl;
  }
  return 0;
}

A-B Problem nyoj的更多相关文章

  1. Prime Ring Problem + nyoj 素数环 + Oil Deposits + Red and Black

    Prime Ring Problem Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) ...

  2. nyoj 473 A^B Problem

    A^B Problem 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 Give you two numbers a and b,how to know the a^ ...

  3. nyoj 623 A*B Problem II(矩阵)

    A*B Problem II 时间限制:1000 ms  |  内存限制:65535 KB 难度:1   描述 ACM的C++同学有好多作业要做,最头痛莫过于线性代数了,因为每次做到矩阵相乘的时候,大 ...

  4. NYOJ:题目524 A-B Problem

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=860 My思路: 先用两个字符串储存这两个实数,然后再用另外两个字符串储存去掉符号和前后多 ...

  5. nyoj 103 A + B problem II

    点击打开链接 A+B Problem II 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 I have a very simple problem for you. G ...

  6. NYoj The partial sum problem(简单深搜+优化)

    题目链接:http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=927 代码: #include <stdio.h> #include & ...

  7. nyoj A+B Problem IV

    A+B Problem IV 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 acmj最近发现在使用计算器计算高精度的大数加法时很不方便,于是他想着能不能写个程序把这 ...

  8. 【志银】NYOJ《题目524》A-B Problem

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=860 My思路: 先用两个字符串储存这两个实数,然后再用另外两个字符串储存去掉符号和前后多 ...

  9. NYOJ 219 An problem about date

    An problem about date 时间限制:2000 ms  |  内存限制:65535 KB 难度:2   描述 acm的iphxer经常忘记某天是星期几,但是他记那天的具体日期,他希望你 ...

随机推荐

  1. 20165207 实验一 Java开发环境的熟悉

    20165207 实验一 Java开发环境的熟悉 一.实验报告封面 课程:Java程序设计 班级:1652 姓名:李天林 学号:20165207 实验日期:2018年4月2日 实验序号:一 实验名称: ...

  2. Java笔记 #01# 最近遇到的几个Throwable

    续<Java入门第三季>第一章 异常与异常处理. 1.StackOverflowError 第一次碰到这个 Error 居然有点小激动,原因当然是因为它叫 StackOverflow Q: ...

  3. 获取本机IP,返回字符串

    public static String GetLocalIp() { String[] Ips = GetLocalIpAddress(); foreach (String ip in Ips) i ...

  4. ubuntu18.04下监视显卡的运行情况【学习笔记】

    作者:庄泽彬(欢迎转载,请注明作者) 说明:使用watch命令监听显卡的使用 安装完显卡驱动之后系统会生成nvidia-smi 这个工具,我们只需要配合watch命令就可以周期性的查看显卡的信息,-n ...

  5. 编译 Tensorflow 1.10 + CUDA9.2 + MKL【转】

    本文转自:https://www.solarck.com/compile-tensorflow-gpu.html 我的电脑系统是基于 Archlinux 的 Manjaro,软件包更新的比较激进,很早 ...

  6. Cube Solution 2

  7. [WCF安全2]使用wsHttpBinding构建UserName授权的WCF应用程序,非SSL

    上一篇文章中介绍了如何使用basicHttpBinding构建UserName授权的WCF应用程序,本文将为您介绍如何使用wsHttpBinding构建非SSL的UserName安全授权的WCF应用程 ...

  8. ssh 指定ssh端口号

    ssh -p higgs@192.168.43.1

  9. Windows 搭建 Linux kernal0.11 环境

    下载:http://www.oldlinux.org/Linux.old/bochs/ 安装bochs 运行 界面:

  10. USB.资料

    1.百度搜索 “usb java” 1.1.基于usb4java实现的java下的usb通信 - tomi_mint - 博客园.html(https://www.cnblogs.com/sowhat ...