Cod sursa(job #213066)

Utilizator rastbananaPanait-Ardelean Alice rastbanana Data 8 octombrie 2008 17:04:08
Problema A+B Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <cstdio>
#include <cstdlib>
#include <iostream.h>
#include <cstring>

int x;
char a[100], i, b[100], aux;

inline char max(char a, char b) {
       if (a>b)
          return a;
       else
           return b;       
}

void aduna(char a[], char b[]) {
     
     int i;
     
     a[0]=max(a[0],b[0]);
     
     for (i=1; i<=a[0]; i++)
         a[i]+=b[i];
         
     for (i=1;i<=a[0];i++) {
         a[i+1]+=a[i]/10;
         a[i]=a[i]%10;    
     }
     
     if (a[a[0]+1]>0)
        a[0]++;           
     
}

int main() {
    freopen("adunare.in","r",stdin);
    freopen("adunare.out","w",stdout);
    
    scanf("%s %s", a+1, b+1);
    //cin>>a+1>>b+1;
    
    a[0]=strlen(a+1);
    b[0]=strlen(b+1);
    
//    cout<<(int) a[0]<<"\n";
        
    for (i=1;i<=a[0];i++)
        a[i]-=48;
        
    for (i=1;i<=b[0];i++)
        b[i]-=48;        
    
    for (i=1;i<=a[0]/2;i++) {
        aux=a[i];
        a[i]=a[a[0]-i+1];
        a[a[0]-i+1]=aux;    
    }

    for (i=1;i<=b[0]/2;i++) {
        aux=b[i];
        b[i]=b[b[0]-i+1];
        b[b[0]-i+1]=aux;    
    }
    
    aduna(a,b);    
    
    for (i=a[0];i>=1;i--)
        printf("%d",a[i]);
        
//    system("PAUSE");
return 0;    
}