The following code is running in my pc...
But spoj finds it wrong..
please help..
#include<stdio.h>
#include<stdlib.h>
int b,i,j;
unsigned long a,k,l;
int string_length(char*);
void reverse(char*);
main()
{
scanf("%d",&b);
for(j=0;j<b;j++)
{
scanf("%lu",&a);
if(a>1000000||a<=0)
exit(0);
for(k=(a+1);;k++)
{
l=k;
for(i=0;i<10;i++)
{
l=l/10;
if(l==0)
break;
}
i=i+1;
char arr[i];
sprintf(arr,"%lu",k);
reverse(arr);
sscanf(arr,"%lu",&l);
if(l==k)
break;
}
printf("%d\n",k);
}
printf("\n");
return 0;
}
void reverse(char *string)
{
int length, c;
char *begin, *end, temp;
length = string_length(string);
begin = string;
end = string;
for ( c = 0 ; c < ( length - 1 ) ; c++ )
end++;
for ( c = 0 ; c < length/2 ; c++ )
{
temp = *end;
*end = *begin;
*begin = temp;
begin++;
end--;
}
}
int string_length(char *pointer)
{
int c = 0;
while( *(pointer+c) != '\0' )
c++;
return c;
}