题目描述
给定一个长度为 N 的数组 a1,a2,…,aN。令 s1,s2,…,sq 为这个数组所有的非空子序列,且 q=2n−1。
关于字典序:如果两个数组 A 和 B 的第一个不相同的位置为 i,且 Ai<Bi;或 A 是 B 的严格前缀(即不能相等),则 A 的字典序小于 B。
我们将由 v1,v2,…,vp 组成的数组的 hash 值定义为:
h(s)=(v1×Bp−1+v2×Bp−2+⋯+vp−1×B+vp)modM其中 B,M 是给定的整数。
对于给定的整数 K,求 h(s1),h(s2),…,h(sK) 的值。
输入格式
第一行四个整数 N,K,B,M。
第二行 N 个整数 a1,a2,…,aN。
输出格式
输出共 K 行,第 i 行为 h(si) 的值。
提示
样例解释
样例 1
s1=[1],s2=[1,2],s3=[2]。
h(s1)=1mod5=1,h(s2)=(1+2)mod5=3,h(s3)=2mod5=2。
样例 2
s1=[1],s2=[1],s3=[1,1],s4=[1,3]。
h(s1)=1mod3=1,h(s2)=1mod3=1,h(s3)=(1×2+1)mod3=0,h(s4)=(1×2+3)mod3=2。
数据规模与约定
对于 60% 的数据,1≤ai≤30;
对于 100% 的数据,1≤N,K,ai≤105,1≤B,M≤106,K≤2N−1。
说明
题目译自 COCI2015-2016 CONTEST #5 T6 PODNIZOVI。