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$。