A+B Problem 交互版 1
You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.
时间限制: 1.0 秒
空间限制: 512 MB
虽然但是,本题时空限制没什么用,且本题只支持 C++ 完成。DSA 辅助练习也只允许使用 C++ 提交。
题目描述
给定两个非负整数 和 ,输出他们的和。
交互方式
这是一道函数式交互题,不需要选手考虑输入输出,也不要从标准输入读入数据,或将任何内容输出到标准输出,否则会影响判题。
你提交的代码需要包含头文件 plus.h
。
你需要实现一个函数 int add(int, int)
,传入参数是两个 int
类型整数 ;返回值见题目描述,为 。
你可以调用函数 int inc(int)
,传入参数是一个整数 ,返回值是 。
你可以调用函数 int dec(int)
,传入参数是一个整数 ,返回值是 。
以下我们给出一个代码提交实例(会固定返回答案 114514,仅作为示例,不保证能得分):
#include "plus.h"
int add(int a, int b)
{
return 114514;
}
你不需要,也不应该,实现主函数。
白盒交互库实例
具体请见附加文件区的 interactor.cc 和 plus.h。需要注意的是,该白盒交互库并非实际评测使用的交互库。
如果你本地的实现代码为 main.cc,则将交互库放在同一目录下,在 Linux 系统中输入以下命令行即可运行:
g++ main.cc interactor.cc -Wall -std=c++20 -o foo -lm -O2 -I/include
在 Windows 下会生成 foo.exe
,在 Linux 下会生成 foo
,你可以输入 .\foo.exe
或者 ./foo
命令行执行该文件。或者将交互库接口与你实现的函数统一在单代码文件中进行本地调试即可。
1 2
3
样例 1 解释
该样例遵循白盒交互库的形式。
输入两个整数,输出他们的和,直接在标准输出判断你的计算结果是否正确。
子任务
对于所有数据,保证 。
提示
这类函数式交互题一般在 DSA OJ 的《数据结构》编程作业当中出现,在信息学竞赛的 APIO、IOI 等国际比赛当中也是统一使用这种交互题形式。
我们在为清华 826 考研同学出《数据结构》编程辅助练习的时候,为了给让大家手动实现算法,或者对算法提出强制的在线处理/更优复杂度等需求,都会使用这种方式。
后续出现的交互问题可能比较复杂,直接手写而不做 debug 也很难一次性写对,因此我们推荐一种手动补全主函数并进行 debug 的方法(每个交互题使用函数的地方都不一样,需要自己去考虑)。
对于本题而言,我们只需要能求 A+B 即可,可以提供我们使用的函数有 inc
和 dec
,因此我们可以将上面的交互文件头去掉,自己手动实现 inc
和 dec
以及主函数,并在本地利用单文件进行脱机调试。
#include <stdio.h>
// 本地单文件调试先把这个去掉,最后再把它加上
// #include "plus.h"
// 手动实现 add 和 dec 查看效果,提交时记得把两个函数注释掉
int add(int x) { return x + 1; }
int dec(int x) { return x - 1; }
int add(int a, int b)
{
// todo:实现该函数
}
// 手动实现主函数,查看一下效果,提交时记得把主函数注释掉
int main()
{
int a, b;
scanf("%d%d", &a, &b);
printf("%d\n", add(a, b));
}
需要注意的是,实际评测使用的交互库不一定与之相同,因此只能在本地进行这种测试。
在 DSA 辅助练习当中,一部分题目会给你对应的示范交互库以及交互方式,但是也只是作为你实现代码的框架示范,实际评测会使用另一套交互库,避免被攻击,或被选手以不正当手段通过题目。
【清华 826 考研 202508 Part 2】清华 826 算法大题
- Status
- Done
- Rule
- IOI
- Problem
- 6
- Start at
- 2025-8-31 13:30
- End at
- 2025-8-31 18:30
- Duration
- 5 hour(s)
- Host
- Partic.
- 23