Решение задачи Длинная сумма с Меньшиков

Без пояснения   Просмотров: 26


Даны два целых неотрицательных числа: M и N. Найти их сумму.


Код

#include <iostream>
#include <string>
#include <cstring> // [для memset]
 
using namespace std;
 
const int max_size = 30010;
struct BigInt
{
    int digits[max_size];
    int amount;
    BigInt()
    {
        memset(digits,0,sizeof(digits));
        amount = 0;
    }
    BigInt(string &str)
    {
        memset(digits,0,sizeof(digits));
        amount = str.size();
        for (int i=str.size()-1,pos=0;i>=0;i--)
            digits[pos++] = str[i]-'0';
    }
    void output()
    {
        for (int i=amount-1;i>=0;i--)
            printf("%d",digits[i]);
    }
};
int osn = 10;
 
BigInt operator + (const BigInt &a, const BigInt &b)
{
    BigInt res;
    res.amount = max(a.amount,b.amount);
    int r = 0;
    for (int i=0;i<res.amount;i++)
    {
        res.digits[i] = a.digits[i] + b.digits[i] + r;
        r = res.digits[i]/osn;
        res.digits[i] -= r * osn;
    }
    if (r)
        res.digits[res.amount++] = r;
    return res;
}
int main()
{
    string s1,s2;
    cin>>s1>>s2;
    BigInt a(s1),b(s2),res;
    res = a+b;
    res.output();
 
    return 0;   
}

         

Администратор Photo Автор: Администратор




Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться