高精度加法

2021-10-23 常用算法 高精度

# 一、算法思想

使用数组来存储大整数,为了方便处理进位,可以按照由低位到高位的顺序存储。

# 二、算法模板

C++

// C = A + B, A >= 0, B >= 0
vector<int> add(vector<int> &A, vector<int> &B)
{
    vector<int> C;
    
    int t = 0;
    for (int i = 0; i < A.size() || i < B.size(); i++) {
        if (i < A.size()) t += A[i];
        if (i < B.size()) t += B[i];
        C.push_back(t % 10);
        t /= 10;
    }
    if (t) C.push_back(1);
    
    return C;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

Go

func add(A, B []int) (C []int) {
    t := 0
    for i := 0; i < len(A) || i < len(B); i++ {
        if i < len(A) {
            t += A[i]
        }
        if i < len(B) {
            t += B[i]
        }
        C = append(C, t%10)
        t /= 10
    }
    if t > 0 {
        C = append(C, t)
    }
    return
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 三、代码实战

# AcWing 0791


题目:高精度加法

给定两个正整数(不含前导 00),计算它们的和。

输入格式

共两行,每行包含一个整数。

输出格式

共一行,包含所求的和。

数据范围

1整数长度1051\le \text{整数长度} \le 10^5

输入样例:

12

23

输出样例:

35

解答代码:

    Last Updated: 2023-01-28 4:31:25