C. LR-remainders
这道题要按照LR的序列顺序来对这个数组相乘取余,也就是说知道了LR的顺序之后就能将原数组重新排列。
数和数相乘取余之后,原数不能恢复,所以可以从最后向前进行相乘取余,最后倒序输出即可。
使用2个stack实现。
#include<iostream>
#include<stack>
using namespace std;
int main(){
int T;cin>>T;
while(T--){
int n,m;cin>>n>>m;
int a[n+2];
for(int i=1;i<=n;i++) cin>>a[i];
string s;cin>>s;
int l=1,r=n;
stack<int>ori;
for(int i=0;i<s.length();i++){
if(s[i]=='L') ori.push(a[l++]);
else ori.push(a[r--]);
}
stack<int>ans;
int now=1;
while(!ori.empty()){
now*=ori.top();
now%=m;
ori.pop();
ans.push(now);
}
while(!ans.empty()){
cout<<ans.top()<<' ';
ans.pop();
}
cout<<endl;
}
}