Pagini recente » Cod sursa (job #1735567) | Cod sursa (job #1336420) | Arhiva de probleme | Cod sursa (job #412977) | Cod sursa (job #3194849)
#include <fstream>
#include <string>
#include <vector>
using namespace std;
ifstream fin("adunare.in");
ofstream fout("adunare.out");
const int base= 10000;
class Big {
private:
vector <int> digits;
public:
Big( string s );
Big &operator+(const Big &add);
void print() const;
};
Big::Big ( string s ) {
digits.resize((s.size()+3)/4);
for ( int i= 0; i<(int)s.size(); ++i ) {
digits[((int)s.size()-i-1)/4]= digits[((int)s.size()-i-1)/4]*10+s[i]-'0';
}
}
Big &Big::operator+(const Big &add) {
for ( int i= 0; i<(int)(this->digits).size() || i<(int)(add.digits).size(); ++i ) {
if ( i>=(int)(this->digits).size() ) {
(this->digits).push_back(0);
}
if ( i<(int)(add.digits).size() ) {
(this->digits)[i]+= (add.digits)[i];
if ( (this->digits)[i]>=base ) {
(this->digits)[i]%= base;
if ( i==(int)(this->digits).size()-1 ) {
(this->digits).push_back(0);
}
++(this->digits)[i+1];
}
}
}
return *this;
}
void Big::print () const {
fout<<digits.back();
for ( int i= (int)digits.size()-2; i>=0; --i ) {
if ( digits[i]<10 ) {
fout<<"000";
} else if ( digits[i]<100 ) {
fout<<"00";
} else if ( digits[i]<1000 ) {
fout<<"0";
}
fout<<digits[i];
}
fout<<"\n";
}
int main() {
string a, b;
fin>>a>>b;
Big x(a), y(b);
x= x+y;
x.print();
return 0;
}