search Frequently Asked Questions
Q:我的程序要在哪里输入和输出数据?
A:你的程序必须从stdin(标准输入)读入数据并且从stdout(标准输出)输出数据.
例如,如果你使用C语言,使用scanf读入数据,使用printf输出数据;
如果是C++语言,还可以使用cincout读入输出数据。

为了性能,建议C++程序也使用scanfprintf,需要#include <cstdio>

注意:不要在程序中输出任何题目未要求的提示信息。

Q:当有多组测试数据时,该如何判断循环结束呢?
A:c语言: 可以用 while (scanf("%d", &n) != EOF) {...}
c++语言: 可以用 while (cin >> n) {...}
Q:本OnlineJudge提供哪些编译器?编译环境是怎么样的?
A:本OJ目前提供GNU C/C++、Free Pascal、Java等编译器,它们的编译参数是:
Clang: clang -fno-asm -lm -static -Wall -std=gnu18 -O3 -pipe -march=native -DONLINE_JUDGE -o Main Main.c
Clang++: clang++ -fno-asm -lm -static -Wall -std=gnu++20 -O3 -pipe -march=native -DONLINE_JUDGE -o Main Main.cc
GCC: gcc -fno-asm -lm -static -Wall -std=gnu18 -O4 -pipe -march=native -DONLINE_JUDGE -o Main Main.c
G++: g++ -fno-asm -lm -static -Wall -std=gnu++20 -O4 -pipe -march=native -DONLINE_JUDGE -o Main Main.cc
Pascal: fpc Main.pas -O2 -Co -Cr -Ct -Ci
Java: javac Main.java -g:none -Xlint -encoding UTF-8
Python: python -c "import py_compile; py_compile.compile(r'Main.py')"
Kotlin: kotlinc Main.kt
运行参数:
Java: java -cp . -Djava.security.manager -DONLINE_JUDGE=true Main
Python: python Main.py
Kotlin: kotlin -DONLINE_JUDGE=true MainKt

我们的服务器运行在Linux平台下,提供的编译器的版本分别是:
  • GCC/G++: 11.1.0
  • Clang/Clang++:
  • Pascal: Free Pascal Compiler version 3.0.4+dfsg-23 [2019/11/25] for x86_64
  • java: javac 1.8.0_362 & openjdk version "1.8.0_362"
  • kotlin: command & ./deploy.sh: line 54: kotlin: command not found
  • Python2: Python 2.7.18
  • Python3: Python 3.8.10
Q:为什么我得到了CE?而在我的电脑上运行的很好?
A:不同的编译器之间有一些语法的差异,请使用相应的编译器进行提交。
另外,我们的OJ对编译器所使用的资源有所限制,限制是: CPU时间 5 s,内存 1024 MB,输出 64 MB
如果你使用的编译器在编译你的程序时超过这个资源限制,将被判为CE。

当你使用G++、GCC时main()函数返回值必须是int,否则你可能会得到CE。

Q:有些题目上面有SPJ是什么意思?
A:SPJ(Special Judged)是指本题可能有多个正确的解。你的程序输出的答案将被一个SPJ的程序检测,以判断你的程序是否正确。

请注意:SPJ的题目一般不会判出PE,所以请确保你的程序输出格式正确。

Q:我要怎么使用64位整数?
A:Python中整数是无限精度的。Java使用long类型。
在C/C++和Pascal语言中,你可以用以下方法使用64位整数:
  • 有符号64位整数,取值范围为:-9223372036854775808 到 9223372036854775807。
    编译器 GCC/G++ Pascal VC/VC++
    类型名称 long long int64 __int64(非标准)
    long long
    输入方法 scanf("%lld", &x);
    cin >> x;
    read(x); scanf("%lld", &x);
    cin >> x;
    输出方法 printf("%lld", x);
    cout << x;
    write(x); printf("%lld", x);
    cout << x;
  • 无符号64位整数,取值范围为:0 到 18446744073709551615。
    编译器 GCC/G++ Pascal VC/VC++
    类型名称 unsigned long long qword unsigned __int64(非标准)
    unsigned long long
    输入方法 scanf("%llu", &x);
    cin >> x;
    read(x); scanf("%llu", &x);
    cin >> x;
    输出方法 printf("%llu", x);
    cout << x;
    write(x); printf("%llu", x);
    cout << x;

请注意:GCC/G++不能使用__int64。

Q:OJ返回的结果分别是什么意思?
A:以下是OJ可能返回的结果和其意义:
Accepted
你的程序产生的输出与参考输出完全一样,但不保证算法是完全正确的。
Presentation Error
你的输出结果是正确的,但格式不正确,可能是你多输出或少输出了空格、Tab(\t)、换行(\n)等,请检查你的程序输出。
Wrong Answer
你的程序输出的结果不正确。
Time Limit Exceed
你的程序尝试使用超过题目限制的时间,可能是你的程序内存在死循环或者你的程序的算法效率太低。
Memory Limit Exceed
你的程序尝试使用超过题目限制的内存。
Output Limit Exceed
你的程序的输出超过了限制。请检查你的程序是否存在死循环问题。
Runtime Error
你的程序发生了运行时错误。可能是由于除0、内存访问违规等运行时问题。
Compile Error
你的程序不能通过编译,请点击该结果可以查看编译器提示。
Restricted Function
使用了受限制的系统调用,比如system()函数是禁止使用的。
Waiting
OJ正在评测其它用户的提交,请你稍等片刻。
Rejuding
你的程序正在准备重新评测,请稍候。
Running
你的程序正在评测当中,请稍候。
System Error
未知错误,如果有该评测结果,请及时联系管理员。
Validator Error
SPJ错误,如果有该评测结果,请及时联系管理员。

注意:对于Java语言,有极少部分可能将RF或RE误判成WA。

Q:我提交代码时能使用快捷键吗?
A: 下面是提交页面的快捷键:
ALT+L
语言(编译器)选项
ALT+C
定位到代码编辑器
ALT+H
切换代码编辑器
ALT+S
提交代码

大部分列表(题目列表、用户列表、比赛列表等)及题目页面,可以使用快捷键←和→。

Q:1000题A+B怎么解答?
A:以下是1000题的各种语言的参考程序:
C语言:
C++语言:
PASCAL语言:
Java语言:
Python语言:

Tips for Java usage

  1. Your solution must contains ONLY ONE public Java class, and make sure name it Main(case-sensitive) and make it public.
  2. There must be a public and static main method with void returning type in Main class.
  3. Note that in problem description, time limit and memory limit of Java may be different with C/C++.
  4. MUST use default package, aka do not place package name!