#D0973. 字符串计算器

字符串计算器

题目描述

小 C 制作了一个字符串计算器。打开时,计算器中的内容是空字符串。他会按顺序输入以下三种指令:

  • + s:把字符串 ss 拼接到当前内容的末尾。
  • * k:把执行这条指令前的整段内容重复 kk 份,替换当前内容。总共是 kk 份,包含原来那一份。例如,ab 执行 * 3 后变成 ababab。
  • % k:只保留当前内容的前 kk 个字符。如果当前内容不足 kk 个字符,则保持不变。

请你输出全部指令执行完后的内容。对空字符串执行重复或保留前缀,结果仍是空字符串。

输入格式

第一行一个整数 qq,表示指令数量。

接下来 qq 行,每行一条指令,格式为 + s、* k 或 % k,指令与参数之间用一个空格隔开。ss 是非空小写字母串,kk 是整数。

输出格式

一行,输出最终的字符串。如果最终字符串为空,输出 EMPTY。

样例

6
+ ab
* 3
% 4
+ c
* 2
% 6
ababca
2
* 3
% 5
EMPTY
3
+ xyz
% 8
* 1
xyz

样例解释

样例 1:每步之后的内容依次为 ab、ababab、abab、ababc、ababcababc、ababca。重复时使用的是该步开始前的整段内容。

样例 2:初始内容为空,重复空串和保留空串的前缀都不会产生字符,因此输出 EMPTY。

样例 3:追加后为 xyz;长度不足 88,保留前缀时不变;重复 11 份也不改变内容。

数据范围与约定

子任务 分值 限制
11 3030 不含 * 指令
22 7070 无额外限制

对于 100%100\% 的数据:

  • 1≤q≤10001\le q\le 1000。
  • 所有 + s 指令中的 ss 都是非空小写字母串,其长度之和不超过 10510^5。
  • * k 指令中,1≤k≤101\le k\le 10;此类指令总共不超过 2020 条。
  • % k 指令中,1≤k≤1091\le k\le 10^9。
  • 保证每条指令执行完后,计算器中的字符串长度都不超过 10510^5。