给我们一个长度为n的序列a,一个正整数m和一个长度为n的指令序列字符串s,指令字符串s仅由‘L’和‘R’两种字母组成。我们将按照指令字符串给出的指令完成n次操作,每次操作如下:
(1)计算并输出序列a中的n个元素的乘积与整数m的余数值;
(2)如果指令字符串的当前指令为‘L’,则删除序列a中的最左边的元素;如果指令字符串的当前指令为‘R’,则删除序列a中的最右边的元素;序列的长度n减1。
显然,经过n次操作之后,序列a的长度为0.
请编写一个程序,对于给定的序列a,按照指令序列s的指令按顺序操作所得到的余数并输出余数序列。
第一行一个整数t(1 ≤ t≤ 10000):测试样例数;
每个测试样例共3行:
第一行两个整数n和m (1≤n≤2e5,1≤m≤1e4):n为序列a的初始长度,需要对m取余数;
第二行共n个整数a1,a2,…,an (1≤ai≤1e4):序列a的n个元素值;
第三行为一个长度为n,仅由‘L’和‘R’字符组成的指令序列s;
测试数据确保所有测试样例的n的和值不超过2e5.
输出共t行,每个测试用例一行n个整数:b1,b2,…,bn,其中bi为第i次操作计算得到的余数。
对于第一个测试用例,执行结果如下:
(1)最开始a=[3,1,4,2],有3*1*4*2 % 6 = 24 % 6 =0,所有第1个余数为0;
(2)s1=L, 因此删除序列a中最左边的元素3,序列a=[1,4,2];
(3)此时有:1*4*2 % 6 = 8%6 = 2,所以第2个余数为2;
(4)s2=R, 因此删除序列a中最右边的元素2,序列a=[1,4];
(5)此时有:1*4 % 6 = 4%6 = 4,所以第3个余数为4;
(6)s3=R, 因此删除序列a中最右边的元素4,序列a=[1];
(7)此时有:1 % 6 = 4%6 = 1,所以第4个余数为1;
(8)s4=L, 因此删除序列a中最左边的元素1,序列a=[];
因此,输出结果为: 0 2 4 1