题目描述
请注意,本题为非传统题,你不应该期望在此题得到满分,根据解的优劣你将得到小于 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}]$ 且数据在该数据范围内随机生成。