Cod sursa(job #108524)

Utilizator lostBlanaru Adina lost Data 22 noiembrie 2007 20:41:14
Problema A+B Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include<stdio.h>
#include<string.h>
int main()
{ char n1[1000],n2[1000],n3[1000];
  int l1,l2,rez,i,l3,tr=0;
  freopen("adunare.in","r",stdin);
  freopen("adunare.out","w",stdout);
  scanf("%s%s",n1,n2);
char aux[1000];
int n=strlen(n1);
for(i=0;i<n;i++)
  aux[n-i-1]=n1[i];
aux[n]=0;
strcpy(n1,aux);
n=strlen(n2);
for(i=0;i<n;i++)
  aux[n-i-1]=n2[i];
aux[n]=0;
strcpy(n2,aux);
  tr=0;
  l1=strlen(n1);
  l2=strlen(n2);
  for(i=0;i<l1 && i<l2;i++)
    {
    rez=n1[i]+n2[i]+tr-2*'0';
    if(rez>=10)
      {
      n3[i]=rez-10+'0';
      tr=1;
      }
       else
	 {
	 n3[i]=rez+'0';
	 tr=0;
	 }
     }
  while(i<l1)
      {  rez=n1[i]+tr-'0';
	 if(rez>=10)
	   {  n3[i]=rez-10+'0';
	     tr=1;
	    }
	  else
	  {  n3[i]=rez+'0';
	    tr=0;
	   }
	i++;
      }
  while(i<l2)
      { rez=n2[i]+tr-'0';
	if(rez>=10)
	     { n3[i]=rez-10+'0';
		tr=1;
	     }
	 else
	 { n3[i]=rez+'0';
	   tr=0;
	   }
	 i++;
       }
 if(l2>l1)
     l3=l2;
  else
    l3=l1;
 if(tr==1)
      {l3++;
       n3[l3]='1';
       l3++;}
  n3[l3]=NULL;
  n=strlen(n3);
  for(i=0;i<n;i++)
     aux[n-i-1]=n3[i];
  aux[n]=0;
  strcpy(n3,aux);
  printf("%s\n",n3);
  return 0;
  }