常见问题及解答
English
问:为什么系统提示我无法上传题目?
答:只有超级管理员和高级用户(在本系统解答题目超过300道)才允许上传题目。
问:提交完代码后系统返回了结果,那些结果表示什么意思呢?
答:程序各种运行结果的含义如下:
Waiting: 系统正在做评判的准备工作,这个过程不会太久,请您稍等片刻再刷新浏览器
Judging: 系统正在评判你的程序,最多几秒钟后您就能看到最终的评判结果
Accepted: 您的程序是正确的,恭喜!
Presentation Error:
虽然您的程序貌似输出了正确的结果,但是这个结果的格式有点问题。请检查程序的输出是否多了或者少了空格(' ')、制表符('\t')或者换行符('\n')。
Wrong Answer: 你的程序正常运行并输出了结果,不过是答案错误
Runtime Error:
运行时错误,这个一般是程序在运行期间执行了非法的操作造成的。以下列出常见的错误类型:
Runtime Error(ARRAY_BOUNDS_EXCEEDED) //数组越界
Runtime Error(DIVIDE_BY_ZERO) //除零
Runtime Error(ACCESS_VIOLATION) //非法内存访问
Runtime Error(STACK_OVERFLOW) //堆栈溢出
Time Limit Exceeded: 您的程序运行的时间已经超出了这个题目的时间限制。
Memory Limit Exceeded: 您的程序运行的内存已经超出了这个题目的内存限制。
Output Limit Exceeded:你的程序往控制台输出了太多信息,请检查程序是否死循环
。
Compile Error:
您的程序语法有问题,编译器无法编译。具体的出错信息可以点击链接查看。
System Error: OJ内部出现错误。由于我们的OJ可能存在一些小问题,所以出现这个信息请原谅,同时请及时与管理员联系。
以下两个为Special Judge题目特有,一般与Judge程序不够健壮有关(当然很大的可能用户的结果是错误的),如发现这样的反馈,请告知管理员:
Judge Delay:评判时间过长,强制终止评判 。
Judge Error:一般不会发生这样的错误,因为这代表Judge程序本身是错的,不过有备无患吧^_^。
问:系统使用的编译环境是怎样的?需要特别注意什么吗?
答:本系统运行于Windows平台,内置五种编译环境,支持C/C++/Java/Pascal四种语言,有关编译器的注意事项有:
1、GCC,,G++ 分别为GNU组织提供的C 和C++语言的编译器,与常用的VC有少许不同,主要有main 函数必须返回int 类型的数据
。
1001题解答如下:
G++:
#include <iostream>
using namespace std;
int main()
{
int a,b;
cin >> a >> b;
cout << a+b << endl;
return 0;
}
GCC:
#include <stdio.h>
int main()
{
int a,b;
scanf("%d %d",&a, &b);
printf("%d\n",a+b);
return 0;
}
2、Java有两个编译器(虚拟机),一个为传统的Sun Java,另一个是GNU Java Compiler(GCJ),二者的不同在于,Sun Java
在虚拟机中运行用户程序,而GCJ 则通过把.class文件转化为本地的可执行代码(在Windows下为.exe
文件)实现了类似于C/C++的脱离虚拟机运行,之于上面的区别,GCJ编译后的程序运行时会比Sun Java 快(实测大概有30%的速度差距);
另外需要注意的是,GCJ 目前只支持 Java 1.4 ,如果使用Java 1.5,则只能使用Sun Java。
Java 解答1001 题代码如下:
Java 1.4
import java.io.*;
import java.util.*;
public class Main
{
public static void main (String args[]) throws Exception {
BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in));
String line = stdin.readLine();
StringTokenizer st = new StringTokenizer(line);
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
System.out.println(a+b);
}
}
Java 1.5
import java.io.*;
import java.util.*;
public class Main
{
public static void main(String args[]) throws Exception
{
Scanner cin=new Scanner(System.in);
int a=cin.nextInt(),b=cin.nextInt();
System.out.println(a+b);
}
}
3、Pascal 对 1001 题的解答
program p1000(Input,Output);
var
a,b:Integer;
begin
Readln(a,b);
Writeln(a+b);
end.
问:有些题目要求“多组测试数据”,我应该怎样处理这样的数据输入?
答:举例说明多组数据输入的问题如下
题号:1002
解答:
#include <stdio.h>
int main()
{
int n,i,a,b;
scanf("%d",&n); /*先输入测试组数*/
for(i=0;i<n;i++)
{
scanf("%d %d",&a,&b);
if(a>b)
printf("%d\n",a);
else
printf("%d\n",b);
}
}
题号:1076
说明:
1、样例输入了“1 2”和“3 4”两行,但这只是“样例”,实际可能有很多行;
2、样例输出为“3”和“7”,分别对应样例输入的“1 2”和“3 4”,
但要注意:不要以为输入完成后,才开始输出;而是:输入一行“1 2”后输出一行“3”,
再输入一行“3 4”,输出“7”,直到结束;
因为“1 2”和“3 4”两行是无关的,属于两组独立的测试用例。
解答:
#include <stdio.h>
int main() /*注意这里需要 int 类型,并非“void main()”*/
{
int a,b;
while(scanf("%d %d",&a,&b)!=EOF) /*判断输入是否结束*/
{
printf("%d\n",a+b); /*每接受一行输入后,马上运算,把结果输出*/
}
}
=========================
题号:1077
解答:
#include <stdio.h>
int main()
{
int n,i,a,b;
scanf("%d",&n); /*先输入测试组数*/
for(i=0;i<n;i++)
{
scanf("%d %d",&a,&b);
printf("%d\n",a+b);
}
}
=========================
题号:1078
解答:
#include <stdio.h>
int main()
{
int a,b;
while(1)
{
scanf("%d %d",&a,&b);
if(a==0 && b==0)break; /*输入结束标志*/
printf("%d\n",a+b);
}
}
或利用逗号表达式,简化判断:
#include <stdio.h>
int main()
{
int a,b;
while(scanf("%d %d",&a,&b), a!=0 || b!=0)
{
printf("%d\n",a+b);
}
}
=========================
题号:1079
解答:
#include <stdio.h>
int main()
{
int a,b,k=0;
while(1)
{
scanf("%d %d",&a,&b);
if(a==0 && b==0)break; /*输入结束标志*/
if(k)printf("\n"); /*每组数据之间保留一个空行*/
printf("%d\n",a+b);
k=1;
}
}
或:
#include <stdio.h>
int main()
{
int a,b,k=0;
while(scanf("%d %d",&a,&b), a!=0 || b!=0)
{
if(k)printf("\n"); /*每组数据之间保留一个空行*/
printf("%d\n",a+b);
k=1;
}
}
问:有些题目标有“Special Judge”,这是什么意思呢?
答:有的题目可能会有答案不唯一的情况,这时会使用一个Special Judge程序提取用户的答案并判断对错,用户无须知道Special
Judge的评判细节,只有一个需要注意的地方,即为简化评判,Special Judge程序一般不评判Presentation
Error,请务必保证输出格式的正确。
问:我想参加TZOJ的在线比赛,如何参加比赛呢?
答:TZOJ两种类型的比赛:一种是public公开比赛,另外一种是private内部比赛。所有注册用户均可以参加公开的比赛,
内部比赛需要用户报名并通过管理员审核才可以参加。
问:如何使用64位整数类型?
答:服务器支持64位有符号和无符号类型的整数。
- 有符号型64位整数,值域为:-9223372036854775808 .. 9223372036854775807。
语言 |
GNU C/C++ |
Pascal |
类型名称 |
__int64 |
int64 |
输入方法 |
scanf("%I64d", &x); |
read(x); |
输出方法 |
printf("%I64d", x); |
write(x); |
- 无符号型64位整数,值域为:0 .. 18446744073709551615。
语言 |
GNU C/C++ |
Pascal |
类型名称 |
unsigned __int64 |
qword |
输入方法 |
scanf("%I64u", &x); |
read(x); |
输出方法 |
printf("%I64u", x); |
write(x); |
|