Cod sursa(job #2861237)

Utilizator bogikanagyNagy Boglarka bogikanagy Data 3 martie 2022 18:41:23
Problema A+B Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.45 kb
#include <fstream>
#include <vector>
#include <string>
#include <algorithm>

#define ll long long

using namespace std;
ifstream cin("adunare.in");
ofstream cout("adunare.out");

string A, B;

string sum(string A, string B)
{
    string summa;
    summa.resize(max(A.size(), B.size()));
    ll n = A.size(), m = B.size();
    ll k = max(m, n), rest = 0;
    if (n > m)
    {
        for (ll i = 0; i < n; ++i) summa[i] = A[i] - '0';
    }
    else
    {
        for (ll i = 0; i < m; ++i) summa[i] = B[i] - '0';
    }
    for (ll i = 1; i <= min(n, m); i++)
    {
        ll act = (A[n - i] - '0') + (B[m - i] - '0') + rest;
        if (act > 9)
        {
            rest = act / 10;
            act = act % 10;
        }
        else rest = 0;
        summa[k - i] = act;
    }
    if (rest)
    {
        for (ll i = min(n, m) + 1; i <= max(n, m); ++i)
        {
            ll act = summa[k - i] + rest;
            if (act > 9)
            {
                rest = act / 10;
                act = act % 10;
            }
            else {
                rest = 0;
                summa[k - i] = act;
                break;
            }
            summa[k - i] = act;
        }
        if (rest) summa.insert(summa.begin(), rest);
    }
    for (ll i = 0; i < summa.size(); ++i)
    {
        summa[i] = summa[i] + '0';
    }
    return summa;
}

int main()
{
    cin >> A >> B;
    cout << sum(A, B);
}