UVa solution : 10018 – Reverse and Add


The problem link is
 UVa:10018-Reverse and Add

Solution:

#include<stdio.h>
#include<string.h>
void GetReverse(char *str,char *rv)
{
    int j,lenth;    
    lenth = strlen(str);
    for(j=0;j<lenth;j++)
    {        
        rv[j] = str[lenth-j-1];
    }
    rv[j]='\0';
}
void GetSum(char *str1,char *str2,char *sum)
{
    int lenth = strlen(str1),carry = 0,j;
    for(j=0;j<lenth;j++)
    {    
        sum[j]=((str1[lenth-j-1]-'0')+(str2[lenth-j-1]-'0') + carry)%10 + 48;
        carry = ((str1[lenth-j-1]-'0')+(str2[lenth-j-1]-'0')+ carry)/10;
        if(j+1 == lenth && carry == 1)
        {
            j++;
            sum[j] = carry + 48;
        }
    }
    sum[j]='\0';
}
int main()
{
    char input[1000],str[1000],rv[1000],sum[1000];
    int test_case,i,j,k,lenth1,lenth2,lenth,carry,tmp,cnt;
    scanf("%d",&test_case);
    for(i=0;i<test_case;i++)
    {
        cnt = 0;
        tmp = 0;
        scanf("%s",&input);
        /*leading zero omitted and copy to another string*/
        for(j=0;j<strlen(input);j++)
        {
            if(input[j] == '0' && tmp == 0)
                continue;
            else
            {
                tmp = 1;
                str[cnt] = input[j];
                cnt++;
            }
        }
        str[cnt]='\0';
        cnt = 0;
        GetReverse(str,rv);
        if(strcmp(str,rv) == 0)
        {
            printf("%d %s",cnt,str);
        }
        else
        {
            while(1)
            {
                cnt++;
                GetSum(str,rv,sum);
                GetReverse(sum,rv);
                if(strcmp(sum,rv) == 0)
                {
                    printf("%d %s",cnt,sum);
                    break;
                }
                else
                {
                    strcpy(str,sum);
                }
            }
        }        
        printf("\n");
    }    
    return 0;
}

Run time: 0.009
User Name on UVA: refatsardar

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: