T571828 【OI】旷野小计算

题目背景

**提示:若是使用“提交代码”的方式进行提交,在评测时会给程序输入一个数字(1, 2, 3, ..., 7)表示测试点编号,请在程序中直接输出对应测试点的答案。**

题目描述

> 关于什么是寄存器:理解成变量即可。 您需要编写指令,完成给定的计算任务。 在以下指令中,小写字母 `v` 开头的参数表示十进制无符号常数,大写字母 `R` 开头的参数表示寄存器。寄存器均为 64 位无符号整数。您可以自由使用的寄存器有六个:`a`、`b`、`c`、`d`、`x`、`y`。除非特别说明,否则所有寄存器初始值均为 $0$。 | 指令格式 | 描述 | | :----------: | :----------: | | `+ R1 R2` | 使 R1 寄存器加上 R2 的值 | | `- R1 R2` | 使 R1 寄存器减去 R2 的值 | | `< R1 v` | 使 R1 寄存器左移 $v$ 位,低位补 0 | | `> R1 v` | 使 R1 寄存器右移 $v$ 位,高位补 0 | | `^ R1 R2` | 使 R1 寄存器异或上 R2 的值 | | `! R1` | 输出 R1 寄存器的值 | | `= R1 v` | 使 R1 寄存器的值变为 $v$ | | `* R1 R2` | 使 R1 寄存器乘上 R2 的值 | | `/ R1 R2` | 使 R1 寄存器除以 R2 的值 | | 编号 | 输入方式 | 任务 | PC 数限制 | 特殊条件 | 分值| | :----------: | :----------: | :--------: | :----------: | :-------: |:----------: | | 1 | 寄存器 `x` 里保存 $x$ | 输出 $4080x$ | $5\color{green}+15$ | | $10$ | | 2 | 寄存器 `x` 里保存 $x$ |输出 $\frac{x}{4080}$(下取整) | $16\color{green}+8$ | $x$ 在 32 位无符号整数范围内 | $10$ | | 3 | 寄存器 `x` 里保存 $x$ |输出 $4080$ | $16\color{green}+8$ | 保证 $x$ 不为 $0$ | $10$ | | 4 | 寄存器 `x`、`y` 里保存 $x$、$y$ | 输出 $x \times y$ 的值 | $1024\color{green}+512$ | 答案自然溢出即可(即对 $2^{64}$ 取模) | $10$ | | 5 | 寄存器 `x`、`y` 里保存 $x$、$y$ | 输出 $\frac x y$ 的值 (下取整)| $1024\color{green}+512$ | $x$ 和 $y$ 在 32 位无符号整数范围内,保证 $y$ 不为 $0$ | $20$ | | 6 | 寄存器 `x` 里保存 $x$ | 输出 $\sqrt x$ 的值 (下取整) | $1024\color{green}+16384$ | | $20$ | | 7 | 寄存器 `x` 里保存 $x$ | 输出大于等于 $x$ 的最小的 $2$ 的次幂 | $96\color{green}+128$ | 保证 $x$ 不为 $0$ 且答案在 64 位无符号整数范围内 | $20$ |

输入格式

输出格式

说明/提示

请注意: - 程序的大小非常关键,运行的指令条数超过了 PC 数限制就会扣除分数。PC 数限制 $x\color{green}+y$ 表示: - 当运行的指令条数 $c \le x$ 时,获得该测试点的全部分数; - 当运行的指令条数 $c >x+y$ 时,不得分; - 当运行的指令条数 $c \in (x, x+y)$ 时,获得该测试点 $(x+y-c)/y\times 100\%$ 的分数(即:线性衰减)。 - 常数、乘法、除法指令(即表格中后三条指令)是非常昂贵的,使用了就会扣除所有的分数。 因此,两个样例的输出实际均不能得到分数。 附件提供 `chk.exe`,供交互式运行指令,输入单条指令回车后即可运行。为方便给寄存器赋值,额外提供指令(评测机内不识别该指令): | 指令格式 | 助记符格式 | 说明 | |:----------: |:----------: |:----------: | | `? R1` | `read R1` |从标准输入读入一个 64 位无符号整数,保存到 R1 寄存器中 |