提示: 欢迎访问OurACM平台
Frequently Asked Questions


Q:我的程序要在哪里输入和输出数据?
A:你的程序必须从stdin(基本输入)读入数据并且从stdout(基本输出)输出数据. 例如,你使用C语言的话,使用scanf输入数据,使用printf输出数据,使用C++语言的话,还可以使用cin和cout读入输出数据。
请注意,你不能进行任何文件的读写操作,否则会返回错误"Restrict Function Call"。


Q:评测服务器的性能怎样?
A:正常情况下,在我们OJ的1000题上使用GNU C++编译器提交以下代码,评测结果为使用时间接近1秒。
#include<stdio.h> int main() { int a,b,i; while(scanf("%d%d",&a,&b)!=EOF) printf("%d\n",a+b); for(i=0;i<450000000;++i) ++a; return 0; }


Q:本OnlineJudge提供哪些编译器?编译环境是怎么样的?
A:本OJ目前提供Microsoft Visual C/C++、GNU C/C++、Free Pascal、Java等编译器,它们的编译参数是:
GNU C: gcc Main.c -o Main.exe -ansi -fno-asm -w -lm --static -DONLINE_JUDGE
C++: g++ Main.cpp -o Main.exe -ansi -fno-asm -w -lm --static -DONLINE_JUDGE
Free Pascal(FPC): fpc Main.pas -oMain.exe -Co -Cr -Ct -Ci -dONLINE_JUDGE
Microsoft Visual C: cl Main.c -FeMain.exe -F8388608 -nologo -EHsc -MP1 -w -DONLINE_JUDGE
Microsoft Visual C++: cl Main.cpp -FeMain.exe -F8388608 -nologo -EHsc -MP1 -w -DONLINE_JUDGE
Java: javac -J-Duser.language=en Main.java

我们的服务器运行在Windows NT平台下,提供的编译器的版本分别是:
  • Gcc/G++ Version 3.4.5 (mingw special)
  • Free Pascal Compiler Version 2.2.4 [2009/04/10] for i386
  • Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86
  • Java SDK Version 1.6.0_12



  • Q:为什么我得到了CE?而在我的电脑上运行的很好?
    A:不同的编译器之间有一些语法的差异,请使用相应的编译器进行提交。
    另外,我们的OJ对编译器所使用的资源有所限制,限制是:CPU时间5秒,内存使用128MB,如果你使用的编译器在编译你的程序时超过这个资源限制,将被判为CE。


    Q:有些题目上面有“Special Judge”是什么意思?
    A:Special Judge是指本题可能有多个正确的解。你的程序的答案将被一个SPJ的检测程序检测,以判断你的程序是否正确。请注意:SPJ的题目一般不会判出PE,所以请确保你的程序输出格式正确。


    Q:我要怎么使用64-bit整形?
    A:在C/C++和Pascal语言中,你可以用以下方法使用64-bit整形:
    • 有符号64-bit整形,取值范围为:-9223372036854775808 到 9223372036854775807。
      语言 GCC/G++ Pascal VC/VC++
      类型名称 long long int64 __int64
      long long
      输入方法 scanf("%I64d", &x);
      cin >> x;
      read(x); scanf("%I64d", &x);
      cin >> x;
      输出方法 printf("%I64d", x);
      cout << x;
      write(x); printf("%I64d", x);
      cout << x;
    • 无符号64-bit整形,取值范围为:0 到 18446744073709551615。
      语言 GCC/G++ Pascal VC/VC++
      类型名称 unsigned long long qword unsigned __int64
      unsigned long long
      输入方法 scanf("%I64u", &x);
      cin >> x;
      read(x); scanf("%I64u", &x);
      cin >> x;
      输出方法 printf("%I64u", x);
      cout << x;
      write(x); printf("%I64u", x);
      cout << x;


    Q:OJ返回的结果分别是什么意思?
    A:以下是OJ可能返回的结果和其意义:

    AcceptedOK! 你的程序是正确的。
    Presentation Error你的输出结果是正确的,但格式不正确,可能是你多输出或少输出了空格、Tab(\t)、换行(\n)等,请检查你的程序输出。
    Wrong Answer你的程序输出的结果不正确。
    Time Limit Exceed你的程序尝试使用超过题目限制的时间,可能是你的程序内存在死循环或者你的程序的算法效率太低。
    Memory Limit Exceed你的程序尝试使用超过题目限制的内存。
    Restrict Function Call你的程序尝试使用不允许的系统API,请注意,打开任意文件将被判为RFC。
    Runtime Error你的程序发生了运行时错误。可能是由于除于0、内存访问违规等运行时问题。
    Compile Error你的程序不能通过编译,请点击该结果可以查看编译器提示。
    Output Limit Exceed你的程序的输出超过了系统限制。请检查你的程序是否存在死循环问题。目前系统的限制是8MB。
    Judging 你的程序正在评测当中,请稍候。
    QueuingOJ正在评测其它用户的提交,请你稍等片刻。
    System Error 未知错误,如果有该评测结果,请及时联系管理员。
    注意:对于Java语言,有极少部分可能将RFC与RE判成WA。


    Q:1000题怎么解答?
    A:以下是1000题的各种语言的参考程序:
    C++语言:
    #include <iostream> using namespace std; int main() { int a,b; while (cin>>a>>b) cout<<a+b<<endl; return 0; }
    C语言:
    #include <stdio.h> int main() { int a,b; while (scanf("%d%d",&a,&b)!=EOF) printf("%d\n",a+b); return 0; }
    PASCAL语言:
    var a,b:integer; begin while not eof do begin readln(a,b); writeln(a+b); end; end.
    Java语言:
    import java.io.*; import java.util.*; public class Main { public static void main(String[] args) { Scanner cin = new Scanner ( System.in ); int a,b; while(cin.hasNext()) { a=cin.nextInt(); b=cin.nextInt(); System.out.println(a+b); } } }