Logo HelloWorld信息学奥赛题库

少儿编程

时间限制:5 s 空间限制:256 MB

#4499. fast and powerful

Statistics

题目描述

请注意,本题为非传统题,你不应该期望在此题得到满分,根据解的优劣你将得到小于 100 的一个分值。

zzq 正在开发一种新的专用 CPU,这块 CPU 可以在 cache 中存储无限个变量。变量可以通过它的标识符:一个长度不超过 $20$ 的由小写字母和数字组成的非空字符串进行存取。一个未赋值过的变量的值可能是任意的。

这块 CPU 上需要支持一个特殊指令,$\text{powern}$,它可以对于一个给定的变量 $\text{input}$,求出它的 $n$ 次幂并赋值到变量 $\text{output}$,其中 $n$ 是客户选定的一个整数。

由于 CPU 还在开发阶段,目前它只支持两个指令:$\text{mul}$ 和 $\text{set}$,分别可以把一个变量赋值为两个变量相乘的结果、把一个变量赋值为一个变量的值。

这两个指令的使用方法也非常简单:$\text{mul a b c}$ 表示把变量 $a$ 赋值为 $b \times c$,$\text{set a b}$ 表示把变量 $a$ 赋值为 $b$。

当然,变量存储的不一定是整数,但是乘法一定满足交换律和结合律。此外,乘法运算格外地慢,所以 zzq 希望尽量减少乘法运算的使用。你能帮助他实现 $\text{powern}$ 吗?

计分方式:对于每一个测试点中给定的 $n$,若你没有正确实现 $\text{powern}$,得 0 分,否则设你用了 $t$ 次乘法运算,你在该测试点上的得分将为该测试点所属子任务的满分的 $0.985^{t-\lceil \log_2 n \rceil+1}$ 倍。一个子任务的得分为测试点得分的最小值。

输入格式

一行一个正整数 $n$。

输出格式

一行一个形如 $\text{mul a b c}$ 和 $\text{set a b}$ 的指令,不超过 $1000$ 行。

样例

input

5

output

set x1 input
mul x2 x1 x1
mul x3 x1 x2
mul x5 x3 x2
set output x5

这只是一种可能的输出。共用了 $3$ 次乘法运算。

数据范围与提示

共 $5$ 个子任务,每个子任务 $10$ 个测试点。

子任务 $1$,$5$ 分。$n \in [11,20]$ 且数据包含所有可能的 $n$。

子任务 $2$,$15$ 分。$n \in [5\times 10^2,10^3]$ 且数据在该数据范围内随机生成。

子任务 $3$,$15$ 分。$n \in [5\times 10^5,10^6]$ 且数据在该数据范围内随机生成。

子任务 $4$,$30$ 分。$n \in [5\times 10^{11},10^{12}]$ 且数据在该数据范围内随机生成。

子任务 $5$,$35$ 分。$n \in [5\times 10^{29},10^{30}]$ 且数据在该数据范围内随机生成。