HDU-1753 大明A+B,小数A+B_小数a+bc语言-程序员宅基地

技术标签: c语言  # 数论,大数,游戏  

HDU-1753 大明A+B,小数A+B

话说,经过了漫长的一个多月,小明已经成长了许多,所以他改了一个名字叫“大明”。
这时他已经不是那个只会做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

import java.math.BigDecimal;
import java.util.Scanner;
public class Main {
    
    public static void main(String[] args) {
    
        Scanner cin = new Scanner(System.in);
        while(cin.hasNext())
        {
    
            BigDecimal a=cin.nextBigDecimal();
            BigDecimal b=cin.nextBigDecimal();
            System.out.println(a.add(b).stripTrailingZeros().toPlainString());
        }
    }
}
#include<stdio.h>
#include<string.h>
int c1[1010],c2[1010],a1[1010],b1[1010];
int main()
{
    
	char a[1010],b[1010];
	int i,j,k,l1,l2,t1,t2,a2[1010],b2[1010];
	while(scanf("%s%s",a,b)!=EOF)
	{
    
		for(i=0;i<1000;i++)//初始化为0跟memset一样的道理
		a1[i]=a2[i]=b1[i]=b2[i]=c1[i]=c2[i]=0;
		l1=strlen(a),l2=strlen(b);//计算长度
		for(i=0,j=0;i<l1;i++,j++)//标记小数点
		if(a[i]=='.')
		break;
		t1=i;//记录a的小数点位置
		for(i=t1-1,j=0;i>=0;i--,j++)//整数部分和大数加法一样逆序存方便计算
		a1[j]=a[i]-'0';
		for(i=t1+1,j=0;i<l1;i++,j++)//小数部分直接存,方便计算,自己想想为啥把
		a2[j]=a[i]-'0';
		//同理计算b
		for(i=0;i<l2;i++)
		if(b[i]=='.')
		break;
		t2=i;//标记小数点
		for(i=t2-1,j=0;i>=0;i--,j++)
		b1[j]=b[i]-'0';//整数部分	
		for(i=t2+1,j=0;i<l2;i++,j++)//小数部分
		b2[j]=b[i]-'0';
		int x=0,y=0;
		//计算小数部分
		for(i=500;i>=0;i--)
		{
    
			x=a2[i]+b2[i]+x;
			c2[i]=x%10;//存结果
			x=x/10;
		}
		//计算整数部分,不要把x初始化了 有可能十分位计算完要进位
		//如:1.11+9.9=11.01,这个时候小数点后面1+9等于10要对个位进位
		for(i=0;i<500;i++)
		{
    
			x=x+a1[i]+b1[i];
			c1[i]=x%10;
			x=x/10;
		}
		for(i=500;i>=0;i--)
		if(c1[i]!=0)
		break;
		//特判整数部分为0
		if(i==-1)
		printf("0");
		for(;i>=0;i--)
		printf("%d",c1[i]);//整数部分
		for(i=500;;i--)
		if(c2[i]!=0)
		break;
		int f=0;
		for(j=0;j<=i;j++)
		{
    
			if((j==0&&c2[0]!=0)||i>0&&f==0)//找小数点的位置还要判断是否存在小数部分
			printf("."),f=1;
			printf("%d",c2[j]);
		}
		printf("\n");
	}
 } 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_52792570/article/details/113180725

智能推荐

opencv-python调用大恒相机录制视频(Ubuntu16.04)_opencv python 读取大恒相机-程序员宅基地

文章浏览阅读3.8k次,点赞8次,收藏41次。Python调用大恒相机录制视频(Ubuntu16.04)文章目录Python调用大恒相机录制视频(Ubuntu16.04)环境配置视频录制代码问题解答环境配置驱动安装:https://blog.csdn.net/liuzongyuan1996/article/details/104219550API安装:https://blog.csdn.net/liuzongyuan1996/arti..._opencv python 读取大恒相机

对标记语言的一个非常全的总结-程序员宅基地

文章浏览阅读1.2k次。 突然发现:这本书应该也不错: http://www.worldhello.net/gotgithub/index.html 7. 附录:轻量级标记语言没有标记语言就没有Web和丰富多彩的互联网,但创造了Web的HTML语言并非尽善尽美,存在诸如难读、难写、难以向其他格式转换的问题。究其根源是因为HTML语言是一种“重”标记语言,对机器友好而并非对人友好。下..._textile url缩进

信息学奥赛一本通 1107:校门外的树 | 1931:【05NOIP普及组】校门外的树 | OpenJudge NOI 1.6 06 | 洛谷 P1047 [NOIP2005 普及组] 校门外的树_信奥一本通1107-程序员宅基地

文章浏览阅读3.7k次,点赞4次,收藏3次。【题目链接】ybt 1107:校门外的树ybt 1931:【05NOIP普及组】校门外的树OpenJudge NOI 1.6 06:校门外的树洛谷 P1047 [NOIP2005 普及组] 校门外的树【题目考点】1. 数组2. 模拟【解题思路】用数组模拟各位置是否有树设布尔类型数组a,a[i]表示第i位置是否有树先将0~L的位置都设为有树,把对应数组元素设为true把每个划定的区域设为无树,把对应数组元素设为false最后统计还剩下多少树,即数组a的0~L的位置中,还有多少个元素_信奥一本通1107

jenkins执行npm install失败:Error: [email protected] install: `node bin/[email protected] install: `node bin/install.js`-程序员宅基地

文章浏览阅读9.1k次,点赞4次,收藏2次。最近新做一个使用vue开发的后台管理系统,要和服务端项目一起启动并更新测试服等服务,构建工具使用的jenkins在jenkins是哪个运行npm install命令时报错误如下:[email protected] install /data/.jenkins/workspace/local5-sc-console/sc-admin-view/node_modules/yorkienode bin/install.jsinternal/modules/cjs/loader.js:983throw err;[email protected] install: `node bin/install.js`

实训13-方法1_输入任意两个整数,求这两个整数之间所有数之和,使用方法测试3组数。-程序员宅基地

文章浏览阅读152次。1 输入任意两个数,求这两个整数之间所有数的和,使用方法测试3组数。package hati.lsz.ch02;import java.awt.List;import java.math.BigDecimal;import java.util.ArrayList;import java.util.Arrays;import java.util.Random;import java.util.Scanner;import java.util.function.IntConsumer;pu_输入任意两个整数,求这两个整数之间所有数之和,使用方法测试3组数。

如何理解Pvid,Native vlan(本征vlan)和tag之间的关系_pvid native vlan-程序员宅基地

文章浏览阅读7.5k次,点赞5次,收藏19次。PVID Native vlan VID tag_pvid native vlan

随便推点

Java中new Date().getTime()时间戳问题-程序员宅基地

文章浏览阅读5.4w次,点赞10次,收藏20次。1. getTime()返回值Java和JavaScript都支持时间类型Date,他们的getTime()方法返回的是毫秒数。默认返回的是13位数字,单位是毫秒。2. 注意事项 /** * Returns the number of milliseconds since January 1, 1970, 00:00:00 GMT * represented by this <tt>Date</tt> object. * * @retur_new date().gettime()

Input属性详解_input标签属性-程序员宅基地

文章浏览阅读1.3w次。注意radio(单选框)需要value值相等才可以实现单选的功能,value值可以随意设。(1)当inputtype=“text”、“password”、"hidden"时,定义输入字段的初始值;(2)当inputtype=“button”、“reset”、"submit"时,定义按钮上的显示的文本;(3)当inputtype=“checkbox”、“radio”、"image"时,定义与输入相关联的值;1.name属性元素的名称,也就是name的值代表当前input元素的名字;..._input标签属性

Android Studio获取sha1和md5的方法_android studio md5-程序员宅基地

文章浏览阅读1.1w次,点赞3次,收藏12次。在注册一些三方平台的时候经常会用到sha1,在此记录一下1.在Android Studio最下面找到Terminal点击2.切换到C盘,cd到Users\Administrator\.android文件夹下面3.输入指令keytool -list -v -keystore debug.keystore4.输入密钥库口令android,这里输入是看不见的如下图所示_android studio md5

kcl计算机通信专业,KCL伦敦国王学院计算机和电子工程介绍-程序员宅基地

文章浏览阅读594次。原标题:KCL伦敦国王学院计算机和电子工程介绍KCL国王学院本科很多学生都会选择计算机科学,但是这门课程竞争十分激烈,如果本身条件不是十分突出的话,立思辰留学360建议申请电子与信息工程学士取代!能申请到KCL的几率更大哦!让我们看看这两个专业的具体课程吧! 电子与信息工程学士课程设置:年必修工程师的计算和数学思维IComputational & Mathematical Thinking..._practical experiences of programming

java调用python程序并传递参数_怎么用pytjon执行java并传递参数-程序员宅基地

文章浏览阅读2.2k次,点赞3次,收藏13次。一、java调用python程序,返回字符串python脚本def get_path(filename): y_t = np.loadtxt(filename) peolpex = int(y_t[0][0]) peolpey = int(y_t[0][1]) firex = int(y_t[1][0]) firey = int(y_t[1][1])..._怎么用pytjon执行java并传递参数

程序员必须知道的10大基础实用算法及其讲解_shfit_down(0)-程序员宅基地

文章浏览阅读416次。算法一:快速排序算法快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。快速排序使用分治法(Divide and conquer)策_shfit_down(0)

推荐文章

热门文章

相关标签