... HAVE U TRIED .... AT LEAST 3 TIMES ... OK U CAN SEE THIS ...

Monday, December 30, 2013

UVA-713 :: Adding Reversed Number

#include <bits/stdc++.h>
using namespace std ;
int main ()
{
    int n ,i ,it ,op ;
    cin>>n ;
    for (it=1 ; it<=n ; it++)
    {
        string a="" , b="" , na="" ,nb="" ;
        cin>>a>>b ;
        int l1=a.size() ;
        int l2=b.size() ;
        op=0 ;
        for (i=0 ; i<l1 ; i++)
        {
            if (a[i]=='0' && op==0) continue ;
            else
            {
                op=1 ;
                na=na+a[i] ;
            }
        }
        op=0 ;
        for (i=0 ; i<l2 ; i++)
        {
            if (b[i]=='0' && op==0) continue ;
            else
            {
                op=1 ;
                nb=nb+b[i] ;
            }
        }
 
        reverse (na.begin(),na.end()) ;
        reverse (nb.begin(),nb.end()) ;

        l1=na.size() ;
        l2=nb.size() ;

        if (l1>l2)  nb.insert(0,l1-l2 ,'0') ;
        else if (l1<l2)  na.insert(0,l2-l1 ,'0') ;
     
        l1=max(l1,l2) ;

        int sum=0 ,carry=0  ;
        string res="" ;
        for (i=l1-1 ; i>=0 ; i--)
        {
            sum= (na[i]-'0')+(nb[i]-'0')+carry ;
            if (sum>9)
            {
                carry=1 ;
                sum=sum%10 ;
            }
            else carry=0 ;
            res+= (sum+'0') ;
        }
        if (carry==1) res+='1' ;
   
        char fin[10000]={0} ;
        int j ;
        op=0;
        for (i=0 ,j=0 ; i<=l1 ; i++)
        {
            if (res[i]=='0' && op==0) continue ;
            else
            {
                fin[j]=res[i] ;
                j++ ;
                op=1 ;
            }
        }
        cout<<fin<<endl ;
    }

    return 0 ;
}