本题是一道传统题,你需要编写程序输出题目规定的 hei++
代码,而非直接提交 hei++
代码。
你最后来到了黑衣人
你伪装成他的手下,没想到的是黑衣人
你要在一台奇怪的计算机上完成任务(称之为嘿嘿计算机)。这台计算机最小的存储单位为 int
,存储范围为
黑衣人要求你设计相应的程序,解决以下
任务一:排序
有
任务二:维护前缀和
你要维护一个大小为
下面有
你需要先给
保证
注意:
任务三:多项式乘法
有两个次数均不超过
你需要将这两个多项式相乘,得到一个次数不超过
保证输入多项式的系数是
技术细节
然而,嘿嘿计算机上并不能执行正常的程序,只能执行一种我们称之为 hei++
的代码。
hei++
代码包含若干行。每行可能的形式如下:
ADD i j k
:执行加法 (如果溢出了则结果为 中唯一的那个与 模 同余的数);SUB i j k
:执行减法 (如果溢出了则结果为 中唯一的那个与 模 同余的数);ADDM i j m k
:执行模意义下的加法,将 赋值为 中唯一的那个与 在模 意义下同余的数;SUBM i j m k
:执行模意义下的减法,将 赋值为 中唯一的那个与 在模 意义下同余的数;CPY i k
:执行赋值 ;SET x k
:将 赋值为常量 ;CMP i j k
:若 ,将 赋值为 ,否则赋值为 ;JMP i l
:表示若 ,则程序跳转到第 行(行号从 开始)的开头,否则无事发生; 需在 范围内,其中 为你程序的总行数。当 则会令程序立刻结束。ADV i k
:执行赋值 ;MUL i j m k
:执行模意义下的乘法,将 赋值为 中唯一的那个跟 在模 意义下同余的数(若 程序立刻崩溃);DIV i j k
:将 赋值为 向零舍入之后的结果(若 则程序立刻崩溃);COM i k
:执行赋值 。
除此之外,每行语句前面都可以加一个自定义的标签(但不能有两行拥有相同的标签),标签由大小写英文字母(大小写敏感)或数字组成,且必须以字母开头,例如:
hoho: ADD 2 3 3
然后在 hei++
代码中,JMP
语句中的
JMP 3 hoho
你可以在 JMP
语句中令 l = exit
来达到满足条件就直接让程序退出的效果。
寄存器的写入速度比内存快很多,在操作
在上面的指令中,所有对
每个任务都有时间上限,为
你的 hei++
代码开始执行前,我们会将输入数据写入指定位置,其余位置均为 hei++
代码结束后我们会检查指定位置是否正确,其余位置的值我们并不关心。
注意:由于 hei++
代码可能很长,我们要求你提交一个能输出 hei++
代码的程序,而非 hei++
代码本身。
输入格式
输入仅包含一个
输出格式
你的程序需根据任务编号输出一个符合上述说明的 hei++
程序。
如何使用答案校验器
见答案校验器下载。你需要将 sim.cpp
和 testlib.h
放在同一目录下,然后将 sim.cpp
编译成可执行文件 sim
(注意开启 C++ 11 编译开关)。
sim
的用法为:
./sim <code-file> <task-id>
其中 <code-file>
为一个 hei++
代码的文件名,task-id
为一个
如果 task-id
介于 sim
会按对应的任务进行测评。该答案校验器仅包含一组随机数据,比赛最终测试时会使用更多数据测评。
如果 task-id
等于 sim
会从标准输入读入 hei++
代码,结束后输出
限制与约定
下表中
任务编号 | 评分方式 | ||
---|---|---|---|
1 | |||
2 | |||
3 |
时间限制:
内存限制:
你的程序生成出来的代码大小不能超过
下载
后记
你趁获得黑衣人