问题 6771 --LR余数

6771: LR余数★★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 21  解决: 5
[提交][状态][命题人:]

题目描述

给我们一个长度为n的序列a,一个正整数m和一个长度为n的指令序列字符串s,指令字符串s仅由‘L’和‘R’两种字母组成。我们将按照指令字符串给出的指令完成n次操作,每次操作如下:

1)计算并输出序列a中的n个元素的乘积与整数m的余数值;

2)如果指令字符串的当前指令为‘L’,则删除序列a中的最左边的元素;如果指令字符串的当前指令为‘R’,则删除序列a中的最右边的元素;序列的长度n1

显然,经过n次操作之后,序列a的长度为0.

请编写一个程序,对于给定的序列a,按照指令序列s的指令按顺序操作所得到的余数并输出余数序列。

输入

第一行一个整数t(1 ≤ t≤ 10000):测试样例数;

每个测试样例共3行:

第一行两个整数nm (1≤n≤2e5,1≤m≤1e4):n为序列a的初始长度,需要对m取余数;

第二行共n个整数a1,a2,,an (1ai1e4):序列an个元素值;

第三行为一个长度为n,仅由‘L’和‘R’字符组成的指令序列s

测试数据确保所有测试样例的n的和值不超过2e5.

输出

      输出共t行,每个测试用例一行n个整数:b1,b2,…,bn,其中bi为第i次操作计算得到的余数。

样例输入
Copy
4
4 6
3 1 4 2
LRRL
5 1
1 1 1 1 1
LLLLL
6 8
1 2 3 4 5 6
RLLLRR
1 10000
10000
R
样例输出
Copy
0 2 4 1 
0 0 0 0 0 
0 0 0 4 4 4 
0 

提示

对于第一个测试用例,执行结果如下:

(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

来源

[提交][状态]