CF301C Yaroslav and Algorithm
题目描述
Yaroslav 喜欢算法。我们将描述他最喜欢的一个算法。
1. 该算法接收一个字符串作为输入。我们用 $a$ 表示这个输入字符串。
2. 算法由若干条命令组成。第 $i$ 条命令的形式为 $s_i$>>$w_i$ 或 $s_i$$w_i$,其中 $s_i$ 和 $w_i$ 是长度不超过 $7$ 的字符串,只包含数字和字符“?”,可以为空。
3. 每次迭代时,算法会查找编号最小的 $i$,使得 $s_i$ 作为子串出现在 $a$ 中。如果找不到这样的命令,则算法终止。
4. 设找到的命令编号为 $k$。则用 $w_k$ 替换 $a$ 中首次出现的 $s_k$。如果该命令形式是 $s_k$>>$w_k$,则算法继续执行下一轮迭代。否则,算法终止。
5. 算法终止后的 $a$ 即为输出。
Yaroslav 有一个包含 $n$ 个正整数的集合,他需要设计自己喜欢的算法,使得集合中的每个数都加 $1$。更准确地说,将每个数字视为其十进制字符串表示后,分别对每个字符串运行该算法,应输出对应数字加一后的结果字符串。
帮助 Yaroslav 解决这个问题。
输入格式
第一行包含整数 $n$ $(1 \leq n \leq 100)$,表示集合中的元素个数。接下来的 $n$ 行,每行一个正整数。所有给定的数都小于 $10^{25}$。
输出格式
输出一个可以分别对每个数加一的算法。第 $i$ 行输出第 $i$ 条命令,中间不带空格。
你的算法会被用来分别处理这些数字。只有满足以下条件,答案才被视为正确:
- 每行都是一条合法的算法命令(见题目描述)。
- 命令条数不超过 $50$。
- 算法能使每个给定数加一。
- 对每个数,算法执行的轮数不超过 $200$。
说明/提示
由 ChatGPT 5 翻译