B4472 [厦门小学生 C++ 2025] 数组嵌套大冒险
题目描述
在【编程王国】里,有两位魔法师:A 魔法师 和 B 魔法师。他们各自拥有一只神奇的“数字袋子”:A 魔法师的袋子叫 $ a $,B 魔法师的袋子叫 $ b $。
每个袋子里装着 $ n $ 个数,编号从 1 到 $ n $。如果你想知道袋子里第 $ i $ 个数是多少,就可以用魔法指令:
- $ a_i $ 表示 A 魔法师袋子里的第 $ i $ 个数;
- $ b_i $ 表示 B 魔法师袋子里的第 $ i $ 个数。
有一天,小程序员小 C 发现:这两个魔法袋可以相互嵌套使用!
例如:
- 指令 $\tt{ab3}$ 的意思相当于 `a[b[3]]`:先去 B 魔法师的袋子里找到第 $3$ 个数,再把这个数当作钥匙,去 A 魔法师的袋子里取出对应位置的数。
还可以继续嵌套下去,比如:$\tt{abaa15}$
这其实等价于 `a[b[a[a[15]]]]`。注意,在输入中我们**不使用中括号 `[]`**,而是直接输入字母和数字组成的字符串,且字母在前,数字在后。
现在给定两个魔法袋 $ a $ 和 $ b $,和一条嵌套的魔法指令,请你计算这条指令的最终结果,保证魔法指令有解。
输入格式
输入共四行:
第一行,一个整数 $ n $,表示魔法袋的大小;
第二行,$ n $ 个正整数 $ a_1, a_2, ..., a_n $,分别表示 A 魔法师袋子里的数;
第三行,$ n $ 个正整数 $ b_1, b_2, ..., b_n $,分别表示 B 魔法师袋子里的数;
第四行,一个字符串,包含 $\tt{a}$、$\tt{b}$ 和数字的嵌套指令,不含中括号。
输出格式
输出一个整数,表示魔法指令的最终结果。
说明/提示
### 【样例解释 1】
这条指令相当于 ` a[a[b[4]]] `:
- ` b[4] = 3 `;
- ` a[b[4]] = a[3] = 1 `;
- ` a[a[b[4]]] = a[1] = 2 `。
所以答案是 $2$。
### 【样例解释 2】
这条指令相当于 ` a[b[b[a[a[12]]]]] `:
- ` a[12] = 5 `;
- ` a[a[12]] = a[5] = 3 `;
- ` b[a[a[12]]] = b[3] = 3 `;
- ` b[b[a[a[12]]]] = b[3] = 3 `;
- ` a[b[b[a[a[12]]]]] = a[3] = 6 `。
所以答案是 $6$。
### 【样例解释 3】
这条指令相当于 ` b[3] `:
- ` b[3] = 1 `;
所以答案是 $1$。
### 【数据范围】
设魔法指令的嵌套层数为 $ m $(例如 $\tt{aab4}$ 的 $ m=3 $)。
对于所有测试数据有:$ 1 \leq n, m \leq 10^5 $。
::cute-table{tuack}
| 测试点 | 特殊性质 A | 特殊性质 B | $ n $ | $ m $ |
|:-:|:-:|:-:|:-:|:-:|
| $1\sim 6$ | 是 | 否 | $ 1 \leq n, m \leq 10^5 $ | < |
| $7\sim 12$ | 否 | 是 | ^ | < |
| $13\sim 20$ | 否 | 否 | ^ | < |
特殊性质说明:
- 特殊性质 A:嵌套层数为 $1$,且魔法指令中的数字部分长度为 1;
- 特殊性质 B:魔法指令中的数字部分长度为 $1$。