题目描述
给定整数 N,M,X,以及 K 个正整数 b1,b2,⋯,bK,求有多少长为 M 的整数序列 a1,a2,⋯,aM,满足:
- 0≤ai<2N。
- 存在一个子序列 ai1,ai2,⋯,aik(1≤i1<i2<⋯<ik≤M),使得 $a_{i_1}\oplus a_{i_2}\oplus\cdots\oplus a_{i_k}\ge X$。
- 对于每个 j=1,⋯,K,存在一个子序列 ai1,ai2,⋯,aik(1≤i1<i2<⋯<ik≤M),使得 $a_{i_1}\oplus a_{i_2}\oplus\cdots\oplus a_{i_k}=b_j$。
其中 ⊕ 表示异或。答案对 109+7 取模。
输入格式
第一行:三个整数 N,M,K。
第二行:一个长为 N 的 01 串,为 X 从高位到低位的二进制表示。
接下来 K 行:第 i 行一个长为 N 的 01 串,为 bi 从高位到低位的二进制表示。
输出格式
一个整数,表示答案。
样例输入1
4 4 1
0101
0010
样例输出1
39060
样例输入2
8 10 3
00000000
01101101
11001001
11101111
样例输出2
3836934
样例输入 3
8 10 0
10010110
样例输出 3
808800473
样例输入4
8 20 8
11101010
01010100
00110110
11100011
11100100
11100011
01010101
10110000
00000111
样例输出4
443121994
数据范围
对于所有数据,满足 1≤N≤5000,1≤M≤109,0≤K≤1000,0≤X<2N,1≤bi<2N。
| 子任务编号 |
分值 |
N≤ |
M≤ |
K≤ |
X |
| 1 |
10 |
4 |
10 |
|
| 2 |
8 |
5000 |
1000 |
| 3 |
15 |
300 |
0 |
| 4 |
500 |
=0 |
| 5 |
10 |
|
| 6 |
15 |
5000 |
109 |
0 |
| 7 |
1000 |
=0 |
| 8 |
10 |
|