序号 | 标题 | 作者 | 发表时间 | 费用 | 订购数 | 操作 |
---|
【题目背景】
一个是阆苑仙葩,一个是美玉无瑕。——《枉凝眉》
有一天 33DAI 睡觉做梦进入了喵喵幻境。喵喵幻境有一门编程语言叫做喵喵编程语言(`MeowLang`)。比如下面就是一段计算 `A+B` 的代码:
```
MiaoMiaoMiaoMiaoMiaoMiaoMiaoMiao; MiaoMiaoMiaoMiaoMiao;
;MiaoMiaoMiao;MiaoMiao;
MiaoMiaoMiaoMiao; MiaoMiaoMiao;
MiaoMiaoMiaoMiao; MiaoMiaoMiaoMiao;
MiaoMiaoMiaoMiaoMiaoMiao;
MiaoMiaoMiaoMiaoMiao; MiaoMiao;
MiaoMiaoMiao;
MiaoMiaoMiaoMiao; MiaoMiao;
Miao;
MiaoMiaoMiao;
```
这个程序可以输出第二行的两段 `Miao` 的数量之和个猫猫表情,可以在 [Meowlang Interpreter](https://wixette.github.io/meowlang/)、或者使用下面的 C++ 解释器测试运行这段代码。
请你写一段 C++ 代码,实现输入输出一个喵喵程序代码,保证运行后可以一共输出 $n$ 个猫猫表情。
## 喵喵编程语言参考手册
本题使用中文拼音语境下的喵喵编程语言,只能使用两种字符串:`Miao` 和 `;`,所有这两种字符串之间的多余空格和换行都将被忽略。
### **对应到整数列表**
一段喵喵编程语言的代码可以包含多条语句,每条语句都包含若干个 `Miao` 且以 `;` 结尾。假设有 $n$ 条语句,则解释器会先计算出每条语句中 `Miao` 的数量,并得到一个包含 $n$ 个整数的列表 $a_0\sim a_{n-1}$。
比如下面这段代码对应的列表初始为:`[0,1,2,4,3]`
```
;Meow;Meow Meow;Meow Meow Meow Meow;Meow Meow Meow;
```
### **程序运行**
程序运行时有下面几种变量:
- `IP`:当前执行的语句对应的列表下标,初始为 $0$,每次执行 `E(IP)` 对应的指令。
- `E(x)`:列表中下标为 `x` 的那一项的数字
- `T`:当前列表末尾的的数字
- `N`:`E(IP+1)`,即列表中下一项的数字。
指令集:
| 指令 | 名称 | 描述 | IP 变化 |
|:---:|:---:|:---:|:---:|
| $0$ | `RET` 换行 | 打印一个换行符 | `IP++` |
| $1$ | `MEOW` 喵 | 输出 `T` 个喵 | `IP++` |
| $2$ | `PUSH` 压入 | 在列表末尾添加一项,添加的数字为 `N` | `IP+=2` |
| $3$ | `POP` 弹出 | 删除列表末尾 | `IP++` |
| $4$ | `LOAD` 载入 | 把 `E(N)` 压入列表末尾 | `IP+=2` |
| $5$ | `SAVE` 储存 | 把 `E(N)` 修改为列表末尾的元素的值 | `IP+=2` |
| $6$ | `ADD` 加法 | 把列表末尾两项相加,弹出末尾两项,然后把和压入列表末尾 | `IP++` |
| $7$ | `SUB` 减法 | 计算列表倒数第二项减去最后一项的差,弹出末尾两项,
把差压入队列末尾,如果差为负数,会压入 `0` | `IP++` |
| $8$ | `JMP` 跳转 | 将 `IP` 设置为 `N` | `IP=N` |
| $9$ | `JE` 比较 | 如果列表最后一项是 $0$,将 `IP` 设置为 `N`,
否则设置为 `IP+2` | `IP = (T == 0)`
` ? N : IP + 2` |
| $\ge 10$ | `NOP` 跳过 | 跳过当前指令 | `IP++` |
### **本题规定**
- 程序中的 `Miao` 一共不能超过 $10^4$ 个。
- 任意时刻列表总长度都不能超过 $1000$。
- 涉及到 `N`、`E(x)`、末尾两项的操作,必须存在对应项。
- 最多只能执行 $10^6$ 次指令。
- 当 `IP` 超过列表范围时停止程序。
详细请看下面 C++ 解释器中的代码。
### **C++ 解释器**
为了更好理解喵喵编程语言,我用 `C++` 写了一个语言解释器,这个代码中准确描述了本题规则,你的代码输出的程序就会使用类似这个解释器的方式运行,看看能否输出 $n$ 个喵。
- 喵喵语言解释器:[miao.cpp](/upload/atta/6317/miao.cpp)
- 斐波那契数列算法的喵喵语言代码:miao.txt