
Q:我的程序要在哪里输入和输出数据?
A:你的程序必须从stdin(标准输入)读入数据并且从stdout(标准输出)输出数据.
例如,如果你使用C语言,使用
如果是C++语言,还可以使用
例如,如果你使用C语言,使用
scanf
读入数据,使用printf
输出数据; 如果是C++语言,还可以使用
cin
和cout
读入输出数据。
为了性能,建议C++程序也使用scanf
和printf
,需要#include
<cstdio>
。
注意:不要在程序中输出任何题目未要求的提示信息。
Q:当有多组测试数据时,该如何判断循环结束呢?
A:c语言: 可以用
c++语言: 可以用
while (scanf("%d", &n) != EOF) {...}
c++语言: 可以用
while (cin >> n) {...}
Q:本OnlineJudge提供哪些编译器?编译环境是怎么样的?
A:本OJ目前提供GNU C/C++、Free Pascal、Java等编译器,它们的编译参数是:
Clang:
Clang++:
GCC:
G++:
Pascal:
Java:
Python:
Kotlin:
运行参数:
Java:
Python:
Kotlin:
我们的服务器运行在Linux平台下,提供的编译器的版本分别是:
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。
另外,我们的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位整数:
在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怎么解答?
Tips for Java usage
- Your solution must contains ONLY ONE public Java class
, and make sure name it.Main
(case-sensitive) and make itpublic
- There must be a
public
andstatic
main
method withvoid
returning type inclass.Main
- Note that in problem description, time limit and memory limit of Java may be different with C/C++.
MUST use default package, aka do not place package name!