跳转至

洛谷-P1601 A+B Problem(高精)

题目背景

题目描述

高精度加法,相当于a+b problem,不用考虑负数.

输入格式

分两行输入。a,b<=10^{500}a,b<=10500

输出格式

输出只有一行,代表a+ba+b的值

输入输出样例

输入

1
1

输出

2

//洛谷P1601 A+B Problem
#include <iostream>
#include <iomanip>
#include <vector>
#include <string>
#include <queue>
#include <set>
#include <map>
#include <algorithm>
#include <cmath>
#include <climits>
#include <cstdio>

using namespace std;

int n = 205;
vector<int> num1(n), num2(n);
vector<int> res(n);

void init(vector<int> & v, string s)
{
    int len = s.size();
    v[0] = len;
    for (int i = 1; i <= len; ++i)
        v[i] = s[len - i] - '0';
}

void bigNumPlus(string & s1, string & s2)
{
    init(num1, s1);
    init(num2, s2);

    int pos = 1;
    int extra = 0;
    while (pos <= num1[0] || pos <= num2[0]) {
        res[pos] = num1[pos] + num2[pos] + extra;
        extra = res[pos] / 10;
        res[pos] %= 10;
        ++pos;
    }
    res[pos] = extra;
    //去除前导0
    while (res[pos] == 0 && pos > 1) --pos;

    for (int i = pos; i >= 1; --i)
        cout << res[i];
    cout << endl;
}

int main()
{
    std::ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    string s1, s2;
    cin >> s1 >> s2;
    bigNumPlus(s1, s2);

    return 0;
}