Cod sursa(job #680318)

Utilizator geobarosanu1Tutuianu George geobarosanu1 Data 15 februarie 2012 14:25:18
Problema A+B Scor 0
Compilator cpp Status done
Runda Lista lui wefgef Marime 1.21 kb
#include <iostream>#include <stdio.h>
#include <string>
using namespace std;

class OperatiiNumereMari{
	public:
		string adunare(string x, string y){

			if (x.size()<y.size()){
				string aux=x;
				x=y;
				y=aux;
			}

			int i=x.size()-1,j=y.size()-1,n,m,rap=0;

			while (j>=0){
				
				n=x[i]-'0';
				m=y[j]-'0';
				n+=m+rap;
				rap=0;
				if (n>9){
					rap=1;
					n%=10;
				}

				x[i]=n+'0';

				j--;
				i--;
			}

			if (rap){
				while (i>=0 && rap){
				
					n=x[i]-'0';
					n+=rap;
					rap=0;
					if (n>9){
						rap=1;
						n%=10;
					}

					x[i]=n+'0';

					i--;
				}

			}

			if (rap){
				x.resize(x.size()+1,'s');
				for (i=x.size()-1;i>0;i--)
					x[i]=x[i-1];
				x[0]=rap+'0';
			}

			return x;

		}
		string inmultire(string x,string y){
			
			string n="1",aux=x;

			while (y!=n){
			
				x=adunare(x,aux);

				n=adunare(n,"1");
			}

			return x;
		}
		string sqr(string x,string y){
		
			string n="1",aux=x;

			while (y!=n){
			
				x=inmultire(x,aux);

				n=adunare(n,"1");
			}

			return x;
		}
};


int main()
{
	OperatiiNumereMari operatie;
	freopen("adunare.in","r",stdin);
	freopen("adunare.out","w",stdout);
	string a,b;
	cin >> a >> b;
	cout << operatie.adunare(a,b);

	return 0;
}