程序以信号25终止,时间= 0.06秒mem = 3340KB

时间:2014-04-08 19:08:34

标签: c++ linux

以下代码在ideone.com上运行时产生信号:25的运行时错误,而程序在VS 2013上正常运行;为什么会有这样的不端行为?

#include <stdio.h>
#include <iostream>
#include <math.h>
using namespace std;
int main(void) {
    int a,b,sqroot,i,j;
    a=1;
    for(i=0;i<=1562500;i++)
    {
        sqroot=sqrt(i);
        for(j=1,b=0;j<=sqroot;j++)
        {
            if(i%j==0)
            b++;
        }
        a+=2*b;
        if(sqroot==sqrt(i))
            a--;
        printf("%d,",a);
    }
    return 0;
}

代码是打印所有数字的所有因子的数量之和,直到数字。数字从0到1562500不等

2 个答案:

答案 0 :(得分:4)

信号25(通常)是SIGXFSZ,表示已超出单个文件大小的配额。我的猜测是程序运行的沙箱对输出文件大小有严格的限制,程序的输出被重定向到临时输出文件。这一点,以及您在一行上打印每个整数的事实,无论它是否通过任何测试,都可能导致您超出允许的文件大小。

答案 1 :(得分:0)

&#34;错误行为&#34;在FAQ - Are there any memory or time constraints for the submitted programs?

中进行了解释
Yes, they are as follows:

    compilation time: 10 seconds,
    execution time: 5 seconds (for not logged in users) or 15 seconds (for registered users),
    memory usage: 256 MB.

另一个原因可能是来源本身。如果我标记,但使用iostreamusing namespace std;,我会

Compilation error   time: 0.02 memory: 2292 signal:25

prog.c:2:20: fatal error: iostream: No such file or directory
 #include <iostream>
                    ^
compilation terminated.