系统常见问题帮助

发布者:admin      发布时间:2023/11/29 11:12
# 帮助 ## 评测 C++ 使用 `g++ 9.4.0` 编译,命令为 ``` g++ -fno-asm -Wall -lm --static -O2 -std=c++14 -DONLINE_JUDGE -o Main Main.cc ``` C 使用 `gcc 9.4.0` 编译,命令为 ``` gcc Main.c -o Main -fno-asm -Wall -lm --static -O2 -std=c99 -DONLINE_JUDGE ``` 您可以使用 `#pragma GCC optimize ("O0")` 手工关闭 O2 优化; Java 使用 `OpenJDK 17.0.4` 编译,命令为 ``` javac -J-Xms32m -J-Xmx256m Main.java ``` 如果您的代码中没有 `public class`,请将入口类命名为 `Main`,在评测时提供额外 2 秒的运行时间和 512MB 的运行内存。 Python默认使用 `Python3`,如果想使用 `Python2`,需要在源码第一行写上注释 ``` #python2 ``` | 语言 | 版本 |编译或运行参数| | --- | --- | --- | | C | gcc version 9.4.0 | `gcc Main.c -o Main -fno-asm -Wall -lm --static -std=c17 -DONLINE_JUDGE NULL`| |C++|gcc version 9.4.0|`g++ Main.cc -o Main -fno-asm -Wall -lm -static -std=c++14 -DONLINE_JUDGE NULL`| |Java|openjdk-17-jdk|`javac -J-Xms32m -J-Xmx256m -encoding UTF-8 Main.java`| |Python|3.8.10/2.7.18|`python -c import py_compile; py_compile.compile(r'Main.py')`| 这里给出的编译器版本仅供参考,请以实际编译器版本为准。 请使用**标准输入输出**。 ### Q: cin/cout为什么会超时(TLE)? A: cin/cout因为默认同步stdin/stdout而变慢,并产生更多的系统调用而受到性能影响,可以在main函数开头加入下面代码加速: ``` ios::sync_with_stdio(false); cin.tie(0);* 另外,请使用'\n'而不是 endl ,因为endl默认会增加刷新操作,而导致输出缓冲失效,降低效率。 ``` ### Q: gets函数没有了吗? A: gets函数因为不能限制输入的长度,造成了历史上大量的缓冲区溢出漏洞,因此在最新版本中被彻底删除了,请使用fgets这个函数取代。 或者使用下面的宏定义来取代: ``` #define gets(S) fgets(S,sizeof(S),stdin) ``` ### 返回结果说明 试题的解答提交后由评分系统评出即时得分,每一次提交会判决结果会及时通知;系统可能的反馈信息包括: - 等待评测:评测系统还没有评测到这个提交,请稍候 - 正在评测:评测系统正在评测,稍候会有结果 - 编译错误:您提交的代码无法完成编译,请仔细检查自己的代码 - 答案正确:恭喜!您通过了这道题 - 格式错误:您的程序输出的格式不符合要求(比如空格和换行与要求不一致) - 答案错误:您的程序未能对评测系统的数据返回正确的结果 - 运行超时:您的程序未能在规定时间内运行结束 - 内存超限:您的程序使用了超过限制的内存 - 运行错误:您的程序在运行过程中崩溃了,发生了如段错误、浮点错误等 - 输出超限:您的程序输出了过多内容,一般可能是无限循环输出导致的结果 ### 程序样例 以下样例程序可用于解决这道简单的题目:**读入2个整数A和B,然后输出它们的和**。 gcc (.c) ``` #include int main(){ int a, b; while(scanf("%d %d",&a, &b) != EOF){ printf("%d\n", a + b); } return 0; } ``` g++ (.cpp) ``` #include using namespace std; int main(){ // io speed up const char endl = '\n'; std::ios::sync_with_stdio(false); cin.tie(nullptr); int a, b; while (cin >> a >> b){ cout << a+b << endl; } return 0; } ``` javac (.java) ``` import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNextInt()) { int a = in.nextInt(); int b = in.nextInt(); System.out.println(a + b); } } } ``` python3 (.py) ``` import io import sys sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') for line in sys.stdin: a = line.split() print(int(a[0]) + int(a[1])) ```