HDU1753—大明A+B(大正小数相加)

大明A+B

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 9105    Accepted Submission(s): 3235

Problem Description

话说,经过了漫长的一个多月,小明已经成长了许多,所以他改了一个名字叫“大明”。

这时他已经不是那个只会做100以内加法的那个“小明”了,现在他甚至会任意长度的正小数的加法。

现在,给你两个正的小数A和B,你的任务是代表大明计算出A+B的值。

Input

本题目包含多组测试数据,请处理到文件结束。

每一组测试数据在一行里面包含两个长度不大于400的正小数A和B。

Output

请在一行里面输出输出A+B的值,请输出最简形式。详细要求请见Sample Output。

Sample Input

1.1 2.9
1.1111111111 2.3444323343
1 1.1

Sample Output

4
3.4555434454
2.1

用Java写特别简单:

import java.math.BigDecimal;
import java.util.*;

public class Main {
	public static void main(String[] args) {
		BigDecimal a, b, c;
		Scanner cin = new Scanner(System.in);
		while (cin.hasNext()) {
			a = cin.nextBigDecimal();
			b = cin.nextBigDecimal();
			c = a.add(b);
			if (c.compareTo(BigDecimal.ZERO) == 0)
				System.out.println("0");
			else
				System.out.println(c.stripTrailingZeros().toPlainString());
		}
	}
}

时间: 2024-12-13 08:14:37

HDU1753—大明A+B(大正小数相加)的相关文章

HDU1753 (大正小数相加)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1753 大明A+B Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 14422    Accepted Submission(s): 5290 Problem Description 话说,经过了漫长的一个多月,小明已经成长了许多,所以他改了

HDU1753 大明A+B(大数相加)(Java题解)

大明A+B Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 16499    Accepted Submission(s): 6082 Problem Description 话说,经过了漫长的一个多月,小明已经成长了许多,所以他改了一个名字叫"大明".这时他已经不是那个只会做100以内加法的那个"小明"了,

NYOJ131 小数相加 【字符串】

小数相加 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 给你两个个小数,你能计算出它们的和是多少吗? 你肯定会说,so easy. 可是,如果这些小数中有的是无限循环小数呢? 无限循环小数一般有三部分,整数部分,小数不循环部分,和小数循环部分. 比如: 1.2(34)的三部分分别为1 2 34. 2.(04)的整数部分为2,小数不循环部分不存在,小数循环部分为04 2.4的整数部分为2,小数不循环部分为4,小数循环部分不存在 一般小数循环部分在小数的最后. 现在,

hdu 1002 A + B Problem II(大正整数相加)

代码: #include<cstdio> #include<cstring> #define Min(a,b) ((a)<(b)?(a):(b)) using namespace std; char s1[10000],s2[10000],s3[10000]; int main() { int t; scanf("%d",&t); int tt=0; while(t--) { ++tt; if(tt!=1) printf("\n"

python 小数相加报错 invalid literal for int() with base 10

for i in column1: x = int(i) s += xprint "sum:",s,"count:",len(column1)# round (s / len(column1), 3)print "avg",round (s / len(column1), 3) Traceback (most recent call last): File "C:/3/csv测试.py", line 26, in <mo

js 小数相加

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <script&

JS中小数相加相减时出现很长的小数点的解决方式

1.问题: 平时写的代码中会出现这种情况,parseFloat(11.3-10.1) 运行的结果依然是1.200000000000001 代码示例: var arr = [0.0111,11.002,0.3,1.5,1.61] var total = 0 arr.forEach(item =>{ total += item }) console.log(total) 返回的结果---  14.423100000000002,这种情况就不合常理. 2.解决方案: 这里有一种可行的解决方法,应用到M

JS处理小数相加出现溢出的问题

1.首先呈现一下问题: let a = 0.1 + 0.2let b = 0.3我们的期望:a==b 为true结果:a==b 为false打印一下a和b的值分别为:0.30000000000000004 和 0.3 2.在实际应用中如何匹配a和b的值呢?有一种常见的方法是设置一个误差范围值,通常称为“机器精度”.可以使用Number.EPSILON来比较两个数字是否相等.下面定义方法如下: function numberCloseEqual(n1,n2) { return Math.abs(n

ACM1753大明A+B

ACM1753_link 这道题利用了大数相加,但是需要将小数和整数部分分开,独立相加,然后组合成一个数: 数据的可能性: 1.两个整数相加,没有小数点 2.一个整数一个小数相加 3.两个小数相加 要对上面三种可能性进行分别处理 两个整数相加:存放在数组partone[N],parttwo[N]中,将答案存放在result数组中,用下面代码就可以完成 1 int t=0; 2 for(int i=0;i<maxn;i++) 3 { 4 t=partone[i]+parttwo[i]+t;//整数