Hello,
I'm not sure what I'm doing wrong but I keep getting wrong answer for ADDREV...
I've tried all using unsigned int, int, long, and unsigned long for my variables. They all work fine on my computer, and all give WA on SPOJ 
Here's my code:
#include <stdio.h>
#define FIRST 1
#define SECOND 2
int main()
{
unsigned int c, k, x, y, state, place, total, reverse = 0;
do
{
c = getchar();
if (c < 48 || c > 57)
{
continue;
}
else
{
k = k * 10;
k = k + (c - 48);
}
} while (c != '\n');
state = FIRST;
place = 1;
do
{
c = getchar();
if (c == ' ')
{
state = SECOND;
place = 1;
continue;
}
else if (c == '\n')
{
total = x + y;
place = 1;
while ((total / place) >= 10)
{
place = place * 10;
}
while (place > 0)
{
reverse = reverse + ((total % 10) * place);
total = total / 10;
place = place / 10;
}
printf("%d\n", reverse);
state = FIRST;
place = 1;
reverse = 0;
x = 0;
y = 0;
k--;
continue;
}
if (state == FIRST)
{
x = x + ( (c - 48) * place );
place = place * 10;
}
else
{
y = y + ((c - 48) * place );
place = place * 10;
}
} while (k > 0 && c != EOF);
return 0;
}
And... here's the test data I'm using:
12
24 1
4358 754
305 794
2762 2563
435 4320
0 0
123 456
20 20
10000 10000
999999 999999
321 583
9999999 999999
And here's the results my program gives on my computer:
34
1998
1
4236
867
0
579
4
2
8999991
805
89999901
Any help would be appreciated 