F.A.Q / 常见问题解答
Q 我可以使用什么编程语言,并且每个编译器的参数是怎样的?
A 本系统目前支持C、C++、Java三种语言,分别使用GCC、G++和JDK6进行评测,编译器的版本和参数分别为:
- GCC (v4.7.2):gcc.exe src.c -o test.exe
- G++ (v4.7.2):g++.exe src.c -o test.exe
- JDK6 (Update 45):javac.exe -encoding utf-8 Main.java
Q 我如何在 Online Judge 上编写我的程序?
A 评测系统中的输入都是通过标准输入给出的,您的输出也需要以标准输出的形式输出。
对于 A + B 程序(Problem 1000),使用C语言来编写:
上述程序使用C++语言来编写:
上述程序使用Java语言来编写:
Q 评测机的回应代表什么?
A 评测机的回应如下列表所示:
- Pending / Rejudge Pending(等待 / 重测等待):表明您的程序正在排队等待评测,请稍等片刻。
- Judging(评测中):表明您的程序正在评测中。
- Compile Error(编译错误):表明您的程序无法在评测机上编译,您可以在“Online Status”页面查看详细信息。
- Runtime Error(运行错误):表明您的程序在运行时出现错误,您可以在“Online Status”页面查看详细信息。
- Time Limit Exceeded(时间过长):表明您的程序运行时间超出了规定最长的时间。
- Memory Limit Exceeded(内存过量):表明您的程序使用的内存超出了规定最大的内存。
- Output Limit Exceeded(输出过多):表明您程序输出了过多的内容,请确保您的程序没有出现死循环。
- Wrong Answer(答案错误):表明您的程序输出了错误的答案,请注意,评测时使用的数据远远比样例数据复杂的多。
- Presentation Error(格式错误):表明您程序输出内容的格式与标准输出不完全一致,请检查空格、回车等是否输出正确。
- Accepted(通过):表明您的程序是正确的并且通过了评测机的测试。
Q 为什么我的C / C++程序评测机回应 Compile Error(编译错误)?
A 评测机使用的编译器为GCC / G++,可能与您使用的VC++有所不同,例如:
- main 函数必须定义为 int 类型,同时在 main 函数结束前请使用return 0,如果使用 void main() 将会产生 Compile Error。
- 数值转字符串函数 itoa 不是 ANSI 标准函数,请使用其他替代方案。
- 64位整型 __int64 不是ANSI编码规范中的,您可以使用 long long 来代替。由于我们使用的 Windows 操作系统,所以在使用 scanf 和 printf 的时候,请使用 "%I64d" 代替 "%lld"。
Q 我如何从头到尾读取评测数据?
A 如果遇到题目中没有给出数据个数,您可以这样读取评测数据:
读取数字
C
int n; while(scanf("%d", &n) != EOF) { //Do Something }
C++
int n; while (cin >> n) { //Do Something }
Java
Scanner in = new Scanner(System.in); while (in.hasNextInt()){ int n = in.nextInt(); //Do Something }
读取字符
C
char w; while ((w = getchar()) != EOF) { //Do Something }
C++
char w; while (cin.get(w)) { //Do Something }
Java
Scanner in = new Scanner(System.in); while (in.hasNext()){ string w = in.next(); //Do Something }
读取行
C
char l[1024]; while(gets(l)) { //Do Something }
C++
string l; while (getline(cin, l)) { //Do Something }
Java
Scanner in = new Scanner(System.in); while (in.hasNextLine()){ string l = in.nextLine(); //Do Something }
Q 允许提交的最大代码长度是多少?
A 本系统允许提交的最大代码长度为 32767 字节(32KB)。