Cod sursa(job #1718002)

Utilizator PletoPletosu Cosmin-Andrei Pleto Data 16 iunie 2016 12:51:44
Problema A+B Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.57 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in("adunare.in");
ofstream out("adunare.out");

class int_huge
{
public:
    int_huge() {}
    int_huge operator+(int_huge &object)
    {
        int_huge solution,A,B;
        for(int i=0;i<=this->number[0];++i)
        {
            A.number[i]=this->number[i];
        }
        for(int i=0;i<=object.number[0];++i)
        {
            B.number[i]=object.number[i];
        }
        int j,t=0;
        for(j=1;j<=A.number[0] or j<=B.number[0] or t;++j,t/=10)
        {
            t+=A.number[j]+B.number[j];
            A.number[j]=t%10;
        }
        A.number[0] = j-1;
        for(int i=0;i<=A.number[0];++i)
        {
            solution.number[i]=A.number[i];
        }
        return solution;
    }
    void printNumber();
    void readNumber();
private:
    short number[5010];
};

void int_huge::printNumber()
{
    for(int i=this->number[0];i>0;--i)
    {
        out<<this->number[i];
    }
}

void int_huge::readNumber()
{
    char c;
    c=in.get();
    this->number[0]=0;
    while(c!='\n' and c!=NULL)
    {
        this->number[0]++;
        this->number[this->number[0]]=c-'0';
        c=in.get();
    }
    for(int i=1;i<=this->number[0]/2;++i)
    {
        this->number[i]^=this->number[this->number[0]-i+1]^=this->number[i]^=this->number[this->number[0]-i+1];
    }
}

int main()
{
    int_huge a,b;
    a.readNumber();
    b.readNumber();
    int_huge c=a+b;
    c.printNumber();
    in.close();out.close();
    return 0;
}