Cod sursa(job #711029)

Utilizator FlameingoAiordachioaei Marius Flameingo Data 11 martie 2012 10:41:37
Problema A+B Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<fstream>
#include<cstring>
using namespace std;
int main()
{
	ifstream cin("adunare.in");ofstream cout("adunare.out");
	char a[500000],b[500000],c[500000];int i,j,r=0,k=-1,lsa,lsb;
	cin>>a>>b;
	lsa=strlen(a);lsb=strlen(b);
	if(a[0]=='-')
	{
		for(i=0;i<lsa;i++)
			a[i]=a[i+1]*-1;
		lsa--;
	}
	if(b[0]=='-')
	{
		
		for(i=0;i<lsb;i++)
			a[i]=a[i+1]*-1;
		lsb--;
	}
	for(i=0;i<lsa;i++)
		a[i]>0?a[i]-=48:a[i]+=48;
	for(i=0;i<lsb;i++)
		b[i]>0?a[i]-=48:a[i]+=48;
	i=lsa-1;j=lsb-1;
	while(i>=0&&j>=0)
	{
		c[++k]=(a[i]+b[j]+r)%10;
		r=(a[i]+b[j]+r)/10;
		i--;j--;
	}
	if(i>=0)
		while(i>=0)
		{
			c[++k]=(a[i]+r)%10;
			r=(a[i]+r)/10;
			i--;
		}
	if(j>=0)
		while(j>=0)
		{
			c[++k]=(b[j]+r)%10;
			r=(b[j]+r)/10;
			j--;
		}
	if(r)
		c[++k]=r;
	for(;k>=0;k--)
		cout<<(int)c[k];
}