Time Limit: 1 second
Memory Limit: 2 MB

问题描述
给出两个高精度正实数(可以含有小数点或没有),最长200位,字符串读入 求它们的和,小数部分末尾的0要舍去。

Input

文件输入两行,第一行是被加数,第二行是加数,回车结束输入。

Output

输出求和的值,最后用回车结束
Sample Input

123456789.123456
987654321.4321
Sample Output

1111111110.555556

【题目链接】:http://noi.qz5z.com/viewtask.asp?id=a101

【题解】

把两个数字小数部分的长度变成一样(不足补零);
这样小数部分就对齐了;
然后把小数点去掉;
进行正常的整数高精度加法就好了;
然后在进位的时候先不要把个位的0去掉;
进行完整数高精度加法之后;把小数点加到整数里面去;
然后再去掉个位的0;
要注意整数的情况比如0.9+0.1最后不要输成”1.”要把小数点去掉的。
特判一下就好;
去掉前导的0的话时候要注意别把小数点前的0也删掉了;
不然0.5就会变成.5;

【完整代码】

#include <string>
#include <algorithm>
#include <iostream>
#include <cstdio>using namespace std;const int MAXN = 250;string s1,s2;
int len1,len2;
int a[MAXN],b[MAXN],c[MAXN]={0};void add0(string &s,int &l,int &r)
{for (int i = l+1;i <= r;i++)s+='0';l = r;
}string sub(string s1,string s2)
{int len1 = s1.size(),len2 = s2.size();reverse(s1.begin(),s1.end());reverse(s2.begin(),s2.end());for (int i = 1;i <= len1;i++)a[i] = s1[i-1]-'0';for (int i = 1;i <= len2;i++)b[i] = s2[i-1]-'0';for (int i = 1;i <= 210;i++)c[i] = a[i]+b[i];for (int i = 1;i <= 210;i++){c[i+1] = c[i+1]+c[i]/10;c[i] %= 10;}string temp = "";for (int i = 1;i <= 210;i++){char key = c[i]+'0';temp+=key;}return temp;
}int main()
{//freopen("F:\\rush.txt","r",stdin);cin >> s1>>s2;len1 = s1.size(),len2 = s2.size();int pos1,pos2;pos1 = s1.find('.',0),pos2 = s2.find('.',0);int lp1,lp2;lp1 = len1-1-pos1,lp2 = len2-1-pos2;if (pos1!=-1 && pos2!=-1){if (lp1>lp2)add0(s2,lp2,lp1);elseadd0(s1,lp1,lp2);s1.erase(s1.find('.',0),1);s2.erase(s2.find('.',0),1);}elseif (pos1!=-1){lp2 = 0;add0(s2,lp2,lp1);s1.erase(s1.find('.',0),1);}elseif (pos2!=-1){lp1 = 0;add0(s1,lp1,lp2);s2.erase(s2.find('.',0),1);}elselp1 = lp2 = 0;string tempans = sub(s1,s2);if (lp1!=0)tempans.insert(lp1,".");while (tempans!=""&& tempans[0]=='0')tempans.erase(0,1);if (tempans=="")puts("0");else{if (tempans[0]=='.')tempans.erase(0,1);reverse(tempans.begin(),tempans.end());int len = tempans.size();while (tempans[0]=='0' && tempans[1]!='.')tempans.erase(0,1);cout << tempans;}return 0;
}

转载于:https://www.cnblogs.com/AWCXV/p/7626959.html

【a101】高精度实数加法相关推荐

  1. 实数加法 小数高精度加法 c++ vector实现

    题目地址: [Vjudge] https://vjudge.net/problem/%E8%AE%A1%E8%92%9C%E5%AE%A2-T1180 [计蒜客] 实数加法 - 题库 - 计蒜客 (j ...

  2. A+B Problem IV 大实数加法

    原文链接: A+B Problem IV 大实数加法 上一篇: A-B Problem 大数相等 下一篇: 求高精度幂 (未完成) A+B Problem IV http://acm.nyist.ne ...

  3. Bailian2738 实数加法【数学】

    2738:实数加法 总时间限制: 1000ms 内存限制: 65536kB 描述 求两个实数相加的和. 题目中输入输出里出现的浮点数都有如下的形式: P1P2-Pi.Q1Q2-Qj.对于整数部分,P1 ...

  4. 一元三次方程高精度实数根(C语言)

    文章目录 一.问题描述 二.CCC代码 三.参考文献/资料 一.问题描述   已知一元三次方程ax3+bx2+cx+d=0(a≠0)ax^3 + bx^2 + cx+d = 0(a\neq0)ax3+ ...

  5. 第三章,课外作业(C++,数字高精度之加法)

    昨天无意中去了smartoj(一个OJ题的网站),第一题是输入两个数,然后输出和,觉得很简单,然后就开始做第二题,(题目地址)没想到是这一题是数字高精度的加法,以前学java是也没考虑过这种题目,于是 ...

  6. poj2602(高精度模拟加法)

    高精度加法:这道题是把数字竖着写,还是两个大数相加,稍不注意就超时了,但是前导零这次是要保留的. #include<iostream> #include<algorithm> ...

  7. 华为机试HJ57:高精度整数加法

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 输入两个用字符串表示的整数,求它们所表示的数之和. 字符串的长度不超过10000. ...

  8. c语言实数加法程序,蓝桥杯 算法提高 实数相加(c语言版附注释)

    试题 算法提高 实数相加 蓝桥杯试题解答汇总链接 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 计算两个实数相加的结果. 输入的实数满足如下要求: (1)小数点前的整数部分最多10 ...

  9. 一元二次方程高精度实数根(C语言)

    文章目录 一.问题描述 二.推导步骤 三. C C C代码 四.总结 五.参考文献/资料 一.问题描述   已知一元二次方程 a x 2 + b x + c = 0 ( a ≠ 0 ) ax^2 + ...

最新文章

  1. python基础(迭代器,生成器,装饰器)
  2. (转)PJSIP入门:编译,运用PJSIP,PJMEDIA
  3. php oracle 源码_PHP3中使用ORACLE函数的使用说明
  4. FOI冬令营 Day 3
  5. 由SGA组件内存移动导致前台业务超时问题处理过程
  6. ddr老化测试_手把手教你评估和测试固态存储【深度】
  7. JNI编程中数据类型转换的方法
  8. 远程linux服务器中安装jupyter通过本地浏览器访问使用
  9. 7-28 求矩阵的局部极大值 (15 分)
  10. Ubuntu 查看 Cuda 及 版本
  11. 教育主管部门管理效率、学生学习效率及教师工作效率
  12. 算法导论第三版 16.1-5习题答案
  13. 【C语言】指针(野指针)
  14. Cisco Packet Tracer中配置链路聚合
  15. vue+springboot传数据到数据库一直报错500解决方案
  16. 项目实战之电子商城数据库源码
  17. 海湾gst5000协议号_海湾GST5000控制器说明书(DEMO)预案.doc
  18. JZOJ 3337. 【NOI2013模拟】wyl8899的TLE【暴力】
  19. 【读书有感】——你只是看起来很努力
  20. 反射Modifier

热门文章

  1. STL序列式容器Standard Template Library Sequence Container
  2. LNK2001 VC++
  3. [BMVC 2021] Feature Fusion Vision Transformer for Fine-Grained Visual Categorization
  4. 8086/8088CPU内部结构,引脚图,物理地址与逻辑地址
  5. cpu die 的基础知识
  6. 修补汽车细微划痕的方法
  7. 服务器上的光信号出现红点怎么办,wifi 光信号显示红点(图文)
  8. D. Lucky Chains
  9. 给小学生设计10以内的加减法游戏 以及百以内的加减乘除游戏
  10. JESD2019a SSD温度换算等效时长