Saturday 5 May 2012

UVa 10018 Reverse and Add Solution

#include<stdio.h>
int main()
{
long int count,add,num,rev,t,i,j,d,k;
while(scanf("%ld",&t)==1)
{
for(i=0;i<t;i++)
    {
    scanf("%ld",&num);
    count=0;
    rev=0;
    for(j=num;j!=0;j=j/10)
        {
        d=j%10;
        rev=rev*10+d;
        }
    if(num!=rev)
        for(k=0;k<1000;k++)
        {
        add=num+rev;
        count++;
        rev=0;
        num=add;
        for(j=num;j!=0;j=j/10)
            {
            d=j%10;
            rev=rev*10+d;
            }
        if(num==rev)    break;
        }
    printf("%ld %ld\n",count,num);
       
    }
}
return 0;
}
   

2 comments:

  1. You can also try this:

    #include

    int main()

    {

    int n,i,digit;
    long int num,rev,temp;

    scanf("%d",&n);

    while(n--)
    {
    scanf("%ld",&num);
    temp=num;
    rev=0;
    i=0;
    while(i<1000){
    while(temp>0)
    {
    digit=temp%10;
    rev=rev*10+digit;
    temp=temp/10;

    }
    if(rev==num){
    printf("%d %ld\n",i,num);
    break;
    }

    num=num+rev;
    temp=num;
    rev=0;

    i++;
    }


    }





    return 0;
    }






    ReplyDelete
  2. This comment has been removed by the author.

    ReplyDelete