• Frequently Asked Questions



    Q:NBU OJ支持哪些语言?

    A:到目前为止,NBU OJ支持C、C++、JAVA这三种语言。


    Q:在NBU OJ上能使用哪些输入和输入

    A:你的程序会通过输入流(Standard Input)读取输入,然后通过输出流(Standard Output)写输出。举个例子,你可以使用sacnf在C,或cin在C++,或new Scanner(System.in).Next()在JAVA读取输入,然后可以使用printf在C,或使用cout在C++,或System.out.println在JAVA写输出。用户的程序是不允许打开和读写文件的,如果你这么做了,那么会得到Runtime Error的信息。

    比如要通过NBU OJ上题号为1002的题目,你可以使用以下几种编码形式:


    C代码:

    #include <stdio.h>
    int main(){
        int a,b;
        while(scanf("%d %d",&a, &b) != EOF)
            printf("%d\n",a+b);
    	return 0;
    }

    C++代码:

    #include <iostream>
    using namespace std; int main(){
        int a,b;
        while(cin >> a >> b)
            cout << a+b << endl;
    	return 0;
    }

    Java代码:

    import java.io.*;
    import java.util.*;
    public class Main {
        public static void main(String args[]) throws Exception {
            Scanner cin = new Scanner(System.in);
            while (cin.hasNext()) {
                int a = cin.nextInt(), b = cin.nextInt();
                System.out.println(a + b);
            }
        }
    }

    Q: 为什么我的程序在C++/C下能正常编译,但是使用G++/GCC就会出现Compile Error

    A: GCC/G++和C/C++有所不同,例如:

      1.在G++/GCC下main函数必须定义成int型,定义成void main会得到Compile Error。

      2.循环变量i定义在for语句块之内"for(int i=0...){...}"也会出错。

      3.在G++/GCC中itoa不是一个ANSI函数,但是在C/C++中是的。


    Q: 为什么我的JAVA程序在自己机器上能正常编译运行,但是交上去就会出现Compile Error

    A: 主类名必须是Main


    Q: 为什么使用64位整形long long或者__int64会出现Compile Error

    A: 有些编译器不支持long long,有些编译器不支持__int64,请使用编译器c++(vs2010),两者都支持


    Q:程序提交后,评测返回的那些结果是什么意思?

    A: 下面是常见的OJ评判结果以及它们表示的意思:

      (1)Accepted(AC):程序正确。恭喜你!

      (2)Pending: 提交太多了,OJ无法在第一时间给所有提交以评判结果,后面提交的程序将暂时处于排队状态等待OJ的评判。这个时间一般不会太长。

      (3)Compile Error(CE): 编译错误。程序编译失败,单击相关链接可以查看错误原因。不同的OJ选用的编译器可能不同,对有些库函数的支持与否也会不同。

      (4)Wrong Answer(WA): 答案错误。程序编译成功,并且没有发生运行时错误,但没有(完全)通过题目的测试数据,单击相关链接可以查看引起错误的那一组测试数据。此时应先返回程序检查输出格式是否有错误,在没有这些错误的情况下再考虑算法是否有缺陷或错误。WA大多还是由算法缺陷或错误引起的。

      (5)Presentation Error(PE): 输出格式错误。程序编译成功,没有发生运行时错误,对题目的测试数据求得了正确结果,但结果的输出格式与题目要求的格式不一致。PE通常是由于多/少输出空格或空行等空白字符引起的。

      (6)Runtime Error(RE): 运行时错误。程序编译成功,但发生了运行时错误。RE通常是由于数组索引或指针越界、堆栈溢出、浮点格式异常或除0等原因引起的。

      (7)Time Limited Exceeded(TLE): 时间限制错误。程序运行时间超过了题目要求的最长时间限制。TLE出现时,需要对程序进行优化,设计时间复杂度更低的算法。

      (8)Memory Limited Exceeded(MLE): 内存限制错误。程序运行占用的内存超过了题目要求的最大内存限制。MLE出现时,需要对程序进行优化,设计空间复杂度更低的算法。

      (9)Output Limited Exceeded(OLE): 输出限制错误。程序运行输出的内容超过了题目要求的最大输出内容限制,即题目没有要求的输出内容。OLE一般是由于程序陷入死循环后一直输出引起的。