传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1753

最简小数是小于 1 的数的整数部分需要去掉?

import java.math.BigInteger;
import java.util.Scanner;
import java.math.BigDecimal;public class Main
{public static void main(String args[]){Scanner in = new Scanner(System.in);   while(in.hasNext()){   BigDecimal a = in.nextBigDecimal();BigDecimal b = in.nextBigDecimal();String ans = a.add(b).stripTrailingZeros().toPlainString(); if(ans.startsWith("0")) //去掉前导0{ans = ans.substring(1);}System.out.println(ans);}
}
}

还有这个stripTrailZero()对String和大数类都奏效可以用

C/C++版本:

/*小数点后面的位数可以直接相加,小数点前面的按末尾相加(和小数点后相加不同)。1.注意小数点的进位,如果0位(大于10)还要继续进位,大于10则取余后将tmp2记为1,不大于10则tmp2记为0,小数点前的第一位加tmp2。我就是先进完位再加tmp2错了几次。2.输出的时候判断.要不要输出。*/
#include <iostream> //1753
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;char s1[500], s2[500];
int  a[500], a2[500], b[500];
int lena, lenb, tmp1, tmp2, st1, st2, d2;void cal()
{int  i, j, c=0;st1=0, st2=0;for(i=0; i<lena; i++){if(s1[i]!='.')  a[i]+=s1[i]-'0';else {  st1=max(st1,i-1);  break; }}if(i==lena) st1=lena-1;for(j=i+1; j<lena; j++)b[j-i-1]+=s1[j]-'0';for(i=0; i<lenb; i++){if(s2[i]!='.')  a2[i]+=s2[i]-'0';else {  st2=max(st2,i-1); break; }}if(i==lenb) st2=lenb-1;for(j=i+1; j<lenb; j++)b[j-i-1]+=s2[j]-'0';if(st1>=st2)  c=1;if(c==1){for(i=st1, j=st2; j>=0; i--,j--)a[i]+=a2[j];}else{for(i=st1, j=st2; i>=0; i--,j--)a2[j]+=a[i];for(i=st2; i>=0; i--)a[i]=a2[i];}st1=max(st1,st2);
}void add()
{tmp1=0, tmp2=0;int i, j;for(i=499; i>=0; i--)if(b[i]!=0) break;for(j=i; j>=0; j--){if(b[j]>=10&&j!=0){b[j-1]+=1;b[j]%=10;}else if(b[j]>=10&&j==0){b[j]%=10;tmp2=1;}}a[st1]+=tmp2;for(j=st1; j>=1; j--){if(a[j]>=10){a[j-1]+=1;a[j]%=10;}}
}void output()
{int flag=0, i, j;for(i=499; i>=0; i--)if(b[i]!=0){d2=i;  flag=1; break;}if(flag){for(i=0; i<=st1; i++)printf("%d",a[i]);printf(".");for(j=0; j<=d2; j++)printf("%d",b[j]);puts("");}else{for(i=0; i<=st1; i++)printf("%d",a[i]);puts("");}
}int main()
{while(~scanf("%s%s",s1,s2)){memset(a,0,sizeof(a));memset(a2,0,sizeof(a2));memset(b,0,sizeof(b));lena=strlen(s1);lenb=strlen(s2);cal();add();output();}return 0;
}/*
99999.889 0.111
1000.0 10000.0
112233.1 333.9
123450000 777
123400000 777.700
0.000 0.0000
99999 1
1.2333 20.2667
1212121212.1111111 21212121.33300000000000000
*/

转载于:https://www.cnblogs.com/zhangmingzhao/p/7256687.html

hdu 1753大小数相加相关推荐

  1. Hdu 1753 大明A+B 高精度小数相加

    题意: 很长很长的小数相加.. 思路: 用1000长的数组处理两个小数..前500存整数..后500存小数..然后相应位相加.. 然后输出除去前导0和后面0的.. Tips: ※ strchr(cha ...

  2. 大数据相加_c 大数据相加 class

    <C++语言基础>参考--学生可以相加吗? 返回:贺老师课程教学链接 谈及运算,我们总是习惯"数"的运算.而实际上,像时间之类的对象也是可以进行加减运算的.再进一步,我 ...

  3. 漫画:如何实现大整数相加

    转载自  漫画:如何实现大整数相加 在程序中列出的 "竖式" 究竟是什么样子呢?我们以 426709752318 + 95481253129 为例,来看看大整数相加的详细步骤: 第 ...

  4. Golang 【大字符串相加,求和】

    题目 Golang  [大字符串相加,求和] 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回. 你不能使用任何內建的用于处理大整数的库(比如 BigInteg ...

  5. NTFS格式分区大小数值表

    NTFS格式分区大小数值表 用NTFS格式分区的硬盘按照如下数值进行分区 1GB到300GB精确计算结果: 1G 1028M 2G 2056M 3G 3075M 4G 4103M 5G 5123M 6 ...

  6. 【Java】算法积累1——大整数相加

    算法刚刚入门,每次记录下自己所学的知识总结以及理解,希望能够帮助大家,如有内容有错误或可改进的地方,欢迎一起探讨,一起进步,在此也要感谢WYSCODER学长给我的学习建议 目录 方法一: 思路: 代码 ...

  7. 前端js多个小数相加出现无限循环小数的解决办法

    做项目的时候,发现多个小数相加值明明是100,但js 函数计算后确实99.9999,无限循环小数.恰好在前端大全的公众号上看到了一篇文章解释了这个问题,如下图: 文章链接:https://mp.wei ...

  8. 怎样实现大整数相加?

    问题: 如果给出两个很大很大的整数,这两个数大到long类型也装不下,比如100位整数,如何求它们的和呢? 分析: 回顾起小学数学,当我们需要计算两个较大数目的加减乘除,我们是用列竖式的方式来计算的. ...

  9. HDU 1715 大菲波数

    大菲波数 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

最新文章

  1. js_sl 延迟菜单
  2. Oracle 10g新增DROP DATABASE命令
  3. 面试投行的20个Java问题
  4. 【Python】集合类型产生KeyError异常原因及数据去重
  5. 《黑客秘笈——渗透测试实用指南》—第2章2.4节Web应用程序的扫描
  6. 【推荐系统算法学习笔记1】基本架构、专有名词、构建流程
  7. Istio调用链埋点原理剖析—是否真的“零修改”分享实录
  8. pytorch保存模型pth_pytorch中保存的模型文件.pth深入解析
  9. Editplus中添加System.out.println()快捷键
  10. 对于引用的控件被拒绝访问的解决办法的补充(续)
  11. Ubuntu 挂载windows硬盘突然变成只读了???
  12. Web安全—Web漏扫工具NetSparker安装与使用
  13. “互联网+”大学生创新创业大赛项目策划书
  14. 内存颗粒和闪存颗粒的区别_什么是内存颗粒以及内存颗粒的种类和差别
  15. 886. 可能的二分法
  16. Hadoop 3.X 和 2.X 的常用端口号和配置文件
  17. FL Studio教程之Riff机的简介
  18. 在TCP端口筛选只允
  19. 创业公司如何应对大公司抄袭
  20. 笑傲江湖之精忠报国,终于做完了

热门文章

  1. oracle 回闪技术恢复误删数据
  2. 经典常用算法/常用算法思维---附伪代码以及实现
  3. NLPIR大数据处理技术实现多种类智能挖掘
  4. 官方文档:Office VBA 参考
  5. select,InnoDB为啥会阻塞insert?
  6. Python科学计算工具:NumPy第一部分
  7. Microsoft 365及应用开发的未来:微软BUILD 2018大会第二天主题演讲
  8. 5、【华为HCIE-Storage】--RAID类型
  9. 【ZooKeeper Notes 30】ZooKeeper与Diamond有什么不一样
  10. Windows 10如何禁用Microsoft Edge标签页预览