1. 程式人生 > 其它 >P1601 A+B Problem(高精)

P1601 A+B Problem(高精)

題目傳送門
//P1601.cpp

#include <bits/stdc++.h>

using namespace std;

/**
 * 功能:高精度加法模板
 * @param A
 * @param B
 * @return
 */
vector<int> add(vector<int> &A, vector<int> &B) {
    //宣告結果陣列C
    vector<int> C;

    //以長的為根基,進行計算
    if (A.size() < B.size()) return add(B, A);
    //進位
    int t = 0;
    //列豎式進行計算
    for (int i = 0; i < A.size(); i++) {
        t += A[i];//進位加法
        if (i < B.size()) t += B[i]; //存在這一位,就加
        C.push_back(t % 10);//保留餘數
        t /= 10;//進位
    }
    //最後可能還有進位
    if (t) C.push_back(t);
    //返回
    return C;
}

int main() {
    //以字串形式讀入
    string a, b;
    cin >> a >> b;
    //1、準備動作,將字串的每一位,反序放入到整數運算陣列中
    vector<int> A, B, C;
    for (int i = a.size() - 1; i >= 0; i--) A.push_back(a[i] - '0');
    for (int i = b.size() - 1; i >= 0; i--) B.push_back(b[i] - '0');

    //2、呼叫模板進行計算
    C = add(A, B);

    //3、輸出結果,需要倒序噢
    for (int i = C.size() - 1; i >= 0; i--)printf("%d", C[i]);
    return 0;
}