#P3007. [二级] 实数加法

[二级] 实数加法


高精度实数加法

版权信息:

任务总览

任务名称 时间限制 内存限制 分数
高精度加法 1 sec 512 MB 100 points

题目描述

求两个实数相加的和,题目中输入输出里出现的浮点数都有如下的形式:

P_1P_2...P_i.Q_1Q_2...Q_jP\_1P\_2...P\_i.Q\_1Q\_2...Q\_j

  • 对于整数部分,P_1P_2...P_iP\_1P\_2...P\_i 是一个非负整数,且当整数部分不为 0 时,P10P1≠0
  • 对于小数部分,Q_j0Q\_j \neq 0

输入格式

输入描述:
两行,每行是一个加数。每个加数的长度不超过 100。

输出格式

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

样例输入

0.111111111111111111111111111111
0.111111111111111111111111111111

样例输出

0.222222222222222222222222222222

题目分析

  1. 目标: 计算两个高精度浮点数的和,并保证小数部分不为 0。
  2. 思路:
    • 由于输入的浮点数长度可能很长,普通的浮点数运算可能丢失精度,因此需要使用字符串或高精度数进行处理。
    • 先对齐小数部分,使两数位数相等,然后逐位相加并处理进位。
  3. 解决方案:
    • 分别解析整数部分和小数部分,并确保小数部分的长度一致。
    • 逐位模拟手算加法,注意进位处理。
    • 结果拼接后输出。

时间复杂度分析

步骤 复杂度
处理输入对齐小数部分 O(N)
执行高精度加法计算
总复杂度 O(N)