#B4472. [厦门小学生 C++ 2025] 数组嵌套大冒险

[厦门小学生 C++ 2025] 数组嵌套大冒险

题目描述

在【编程王国】里,有两位魔法师:A 魔法师 和 B 魔法师。他们各自拥有一只神奇的“数字袋子”:A 魔法师的袋子叫 a a ,B 魔法师的袋子叫 b b

每个袋子里装着 n n 个数,编号从 1 到 n n 。如果你想知道袋子里第 i i 个数是多少,就可以用魔法指令:

  • ai a_i 表示 A 魔法师袋子里的第 i i 个数;
  • bi b_i 表示 B 魔法师袋子里的第 i i 个数。

有一天,小程序员小 C 发现:这两个魔法袋可以相互嵌套使用!

例如:

  • 指令 ab3\tt{ab3} 的意思相当于 a[b[3]]:先去 B 魔法师的袋子里找到第 33 个数,再把这个数当作钥匙,去 A 魔法师的袋子里取出对应位置的数。

还可以继续嵌套下去,比如:abaa15\tt{abaa15}

这其实等价于 a[b[a[a[15]]]]。注意,在输入中我们不使用中括号 [],而是直接输入字母和数字组成的字符串,且字母在前,数字在后。

现在给定两个魔法袋 a a b b ,和一条嵌套的魔法指令,请你计算这条指令的最终结果,保证魔法指令有解。

输入格式

输入共四行:

第一行,一个整数 n n ,表示魔法袋的大小;

第二行,n n 个正整数 a1,a2,...,an a_1, a_2, ..., a_n ,分别表示 A 魔法师袋子里的数;

第三行,n n 个正整数 b1,b2,...,bn b_1, b_2, ..., b_n ,分别表示 B 魔法师袋子里的数;

第四行,一个字符串,包含 a\tt{a}b\tt{b} 和数字的嵌套指令,不含中括号。

输出格式

输出一个整数,表示魔法指令的最终结果。

4
2 4 1 3
1 2 4 3
aab4
2
12
3 6 6 4 3 3 8 1 9 11 12 5
6 8 3 2 9 1 10 5 12 4 11 7
abbaa12
6
4
1 2 4 3
2 4 1 3
b3
1

提示

【样例解释 1】

这条指令相当于 a[a[b[4]]]

  • b[4] = 3
  • a[b[4]] = a[3] = 1
  • a[a[b[4]]] = a[1] = 2

所以答案是 22

【样例解释 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

所以答案是 66

【样例解释 3】

这条指令相当于 b[3]

  • b[3] = 1

所以答案是 11

【数据范围】

设魔法指令的嵌套层数为 m m (例如 aab4\tt{aab4}m=3 m=3 )。

对于所有测试数据有:1n,m105 1 \leq n, m \leq 10^5

::cute-table{tuack}

测试点 特殊性质 A 特殊性质 B n n m m
161\sim 6 1n,m105 1 \leq n, m \leq 10^5 <
7127\sim 12 ^
132013\sim 20

特殊性质说明:

  • 特殊性质 A:嵌套层数为 11,且魔法指令中的数字部分长度为 1;
  • 特殊性质 B:魔法指令中的数字部分长度为 11