子序列计数
题目信息
时间限制: 1s
空间限制: 256M
输入文件: count.in
输出文件: count.out
题目描述
众所周知,一个长度为 n 的序列共有 2n−1 个不同的非空子序列,现给出一个长度为 n 的序列 a1,a2,…,an,其中 0≤ai<2m,且 ai 互不相同
定义 a 的一个子序列 p=ap1ap2…apk 是合法的,当且仅当:
- 1≤p1<p2<⋯<pk≤n
- ∀1≤i≤k−3,api⊕api+1⊕api+2⊕api+3=s,其中 ⊕ 表示异或
请问对于 a,有多少个合法的非空子序列?请输出答案 mod 998244353 之后的结果即可
注:长度小于 4 的非空子序列都是合法的。
输入格式
第一行三个正整数 n,m,s,其中 n 表示序列 a 的长度,m 表示 ai 的范围,s 的含义如题面所示
接下来一行 n 个互不相同的非负整数 ai
输出格式
一行一个整数表示答案 mod 998244353 之后的结果
样例
样例输入 1
样例输出 1
数据范围
1≤n≤4000,1≤m≤12,0≤ai,s<2m subtask 1(15pts):n≤10,m≤4 subtask2(20pts) : n≤60,m≤6 subtask 3(25pts):n≤200,m≤8 subtask 4(25pts):n≤1000,m≤10 subtask 5(15pts):n≤4000,m≤12