QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 512 MB Total points: 100 Interactive

#1094. 商业半导体单元

Statistics

Business Semiconductor Units (BSU) 是一家大型跨国公司,专注于向商业客户销售快速且可靠的计算机。最近,他们决定开发一种新的处理器模型,使其工作速度比前代产品更快、更可靠。

公司的研发部门负责设计指令集和处理器架构。在截止日期之后,他们本应向公司负责人展示工作原型。不幸的是,整个部门大部分时间都在玩《我的世界》(Minecraft)而不是完成工作,因此所展示的原型仅支持三条简单的指令。

让我们仔细看看他们的杰作。新处理器有 16 个寄存器,命名为 r0r15,每个寄存器可以存储一个 16 位无符号整数。此外,还有由 $2^{16}+1$ 个 8 位单元组成的内存。

该处理器的程序是一系列指令。指令按顺序执行,不支持跳转或循环。处理器将同一指令序列执行 5000 次。也就是说,以下过程重复 5000 次:从头到尾遍历指令并执行它们。

下面是可用指令列表。为了清晰起见,我们将 $x \pmod{2^8}$ 称为数字 $x$ 的低位部分,将 $\lfloor \frac{x}{2^8} \rfloor$ 称为数字 $x$ 的高位部分。第 $i$ 个内存单元中的数字记为 $mem_i$。

  • imm r, b:将常量 $b$ ($0 \le b < 2^{16}$) 加载到名为 $r$ 的寄存器中;
  • ld x, y:假设名为 $y$ 的寄存器存储数字 $b$。则将 $mem_{b+1} \cdot 2^8 + mem_b$ 放入寄存器 $x$ 中;
  • st x, y:假设名为 $x$ 的寄存器存储数字 $a$,名为 $y$ 的寄存器存储数字 $b$。则将 $b$ 的低位部分放入 $mem_a$,将 $b$ 的高位部分放入 $mem_{a+1}$。

如你所见,指令集非常精简,研发部门不确定该处理器是否能够执行任何非平凡的操作。为了让它运行一些有用的程序,他们聘请了你并交给你一项任务。现在,你需要为新处理器编写一个程序,计算 $n$ 个非负 16 位数字的乘积模 $2^{16}$。

输入格式

本题没有输入数据。

输出格式

按以下格式输出所需的程序。

第一行必须包含一个整数 $s$,即你程序中的指令数 ($1 \le s \le 10^5$)。

接下来的 $s$ 行,每行必须包含一条处理器指令。指令格式如上所述。请务必严格遵守格式。所有寄存器名称必须有效(即从 r0r15)。

交互

从技术上讲,这是一个只读交互式问题。[听起来很奇怪,不是吗?:)]

在每个测试中,交互器首先读取你输出的指令。接下来,它从测试中读取整数 $n$ 和 $n$ 个整数 $a_i$ ($1 \le n \le 4000, 0 \le a_i < 2^{16}$)。数字 $n$ 被放入寄存器 r0 中。对于每个 $1 \le i \le n$,$a_i$ 的低位部分被放入 $mem_{2 \cdot i - 2}$,高位部分被放入 $mem_{2 \cdot i - 1}$。所有其他寄存器和内存单元初始均为零。

然后,交互器执行你的程序。指令按顺序执行,程序执行恰好 5000 次。

之后,交互器从寄存器 r0 读取你的答案,并将其与 $a_1 \cdot a_2 \cdot \dots \cdot a_n \pmod{2^{16}}$ 进行比较。

样例

样例输入 1

```

#### 样例输出 1

4 imm r3, 42 imm r1, 6 st r3, r1 ld r0, r3 ```

说明

示例中的输出并不执行整数乘法,因此提交此程序将获得“Wrong Answer”判决。该程序仅用于说明输出格式。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.