【算法练习】高精度计算 百练poj 2738:实数加法

题目地址:http://bailian.openjudge.cn/practice/2738

高精度计算参考链接:

https://www.cnblogs.com/c1299401227/p/5559162.html

2738:实数加法

总时间限制: 

1000ms

 

内存限制: 

65536kB

描述

求两个实数相加的和。

题目中输入输出里出现的浮点数都有如下的形式:
P1P2...Pi.Q1Q2...Qj。对于整数部分,P1P2...Pi是一个非负整数且当整数部分不为0时,P1不等于0;对于小数部分,Qj不等于0。

输入

2行,每行是一个加数。每个加数的长度不超过100。

输出

一行,即相应的和。输出保证一定是一个小数部分不为0的实数。

样例输入

0.111111111111111111111111111111
0.111111111111111111111111111111

样例输出

0.222222222222222222222222222222

思路:要看一下《王道》上的 大整数计算并熟练掌握

这个用大整数的思路总感觉有点不对,就是小数部分和整数部分分别计算,

小数需要补齐,如果正着存其实可以直接设置size,我是反着存的就循环加0。

然后整数的计算所以我感觉用结构体并没什么用,还要重载+,初始化什么的,怪麻烦的,不如直接用数组。

一会

主要是3个地方让我一直没有AC:

①整数部分有可能有小数的进位 所以

int tmp=ret.digit[i]+digit[i]+t.digit[i]+carry; 

②去掉小数部分末尾的0,由于是倒着存的所以

去掉前面的所有0

if(!Calint){  //小数部分
    if(size>1){
        int tsize=size;
        while( digit[t]==0 && tsize>1){
           
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值