以下代码在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不等
答案 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.
另一个原因可能是来源本身。如果我标记c,但使用iostream
和using 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.