有一个三角形的魔方,初始时,三角形中按行依次填有 A-P 这 16 个字母。魔方每次可以选择某个下图箭头所示的方向进行一次 “旋转” 操作。
共有 3 种合法的 “旋转” 方向,分别对应图中左上(红色箭头)、左下(蓝色箭头)、正右(绿色箭头)三个方向,分别记做 U
、 D
和 R
。
每次 “旋转” 操作选择该方向上含有一、三、五或七个字母的一行(或列),分别记做1
、3
、 5
、 7
。 将不同的方向和行(或列)组合得到十二种合法的 “旋转” 操作,例如:U1
、D7
、R3
。
“旋转” 操作会将该行/列的所有字母向对应箭头方向循环移动一格,第一个字母变成第二个字母、第二个字母变成第三个字母……最后一个字母变成第一个字母,以此类推,例如:
如果我们将三角形魔方写成 “字母三角形” 的形式,那么初始状态就是:
A
BCD
EFGHI
JKLMNOP
如果对初始状态进行两次 U5 旋转,将会得到:
A
GCD
EMNHI
JKLBFOP
现在,你得到了一个魔方旋转机器人,它可以输入一个操作序列,然后将这个操作序列重复a^b (a 的 b 次方,即 a \times a \times a \times \dots \times a ,共 b 个 a 相乘)次。但让机器人旋转魔方实在太耗时了。你能预测出从初始状态开始,执行完机器人的动作后魔方的状态吗?
第一行输入一个字符串,代表了一个操作序列。
第二行输入两个整数 a,b ,代表机器人会将操作序列重复 a^b 次。
输出 16 个字符,为操作序列重复后的魔方的状态,按行依次输出所有字母,例如初始状态输出 “ABCDEFGHIJKLMNOP”。
U3R5D7 5 2
EJLDHACBFKGIMNOP
U3U5U7 105 3
ABCDEFGHIJKLMNOP
R3R5R7U3U5U7D3D5D7D7 2 128
KBPDECGHIJFLMNOA
【数据规模】
对于 50\% 的数据, b=1。
对于 100\% 的数据,1 ≤ a,b ≤ 1,000 。操作序列中 “旋转” 操作的数量不超过 100。
2021 “信息与未来” ⼩学⽣夏令营编程活动