【发布时间】:2009-08-28 19:22:46
【问题描述】:
我正在尝试解决 Sphere Online Judge 的 Adding Reversed Numbers 问题 (ADDREV),但我提交的内容不断出现错误答案。
我已经为我的变量尝试了 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
任何帮助将不胜感激:)
【问题讨论】:
标签: c