Я пытаюсь решить проблему Добавление перевернутых чисел (ADDREV) в Sphere Online Judge, но мое представление продолжает давать неправильный ответ.
Я пробовал int, unsigned int, long и unsigned long для моих переменных, и все они одинаково хорошо работают на моем компьютере с некоторыми тестовыми данными (также ниже), но все они не работают с SPOJ.
Я надеюсь, что кто-то сможет пролить свет на то, почему моя программа не работает в их системе. Я также оставил сообщение на их форуме, но там, похоже, не так много трафика.
Вот мой код:
#include <stdio.h>
#define FIRST 1
#define SECOND 2
int main()
{
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 && (c >= 48 && c <= 57))
{
x = x + ( (c - 48) * place );
place = place * 10;
}
else if (state == SECOND && (c >= 48 && c <= 57))
{
y = y + ((c - 48) * place );
place = place * 10;
}
} while (k > 0);
return 0;
}
И ... вот данные теста, которые я использую:
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
А вот результаты, которые моя программа выдает на моем компьютере:
34
1998
1
4236
867
0
579
4
2
8999991
805
89999901
Любая помощь будет оценена :)