loj#P6571. fast and powerful

fast and powerful

题目描述

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

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

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

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

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

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

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

输入格式

一行一个正整数 nn

输出格式

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

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

数据范围与提示

55 个子任务,每个子任务 1010 个测试点。

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

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

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

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

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