#B0131. 异或序列

    ID: 6243 传统题 1500ms 1024MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>矩阵快速幂动态规划位运算进制转换

异或序列

题目描述

给定一个长度为 nn 的整数序列 a1,a2,,ana_1,a_2,\dots,a_n

我们称一个长度为 kk 的序列 b1,b2,,bkb_1,b_2,\dots,b_k合法序列,当且仅当对任意满足 1i<k1 \le i < k 的位置,都有:

$$\operatorname{popcount}(b_i \oplus b_{i+1}) \equiv 0 \pmod{3}$$

其中:

  • \oplus 表示按位异或;
  • popcount(x)\operatorname{popcount}(x) 表示整数 xx 的二进制表示中 11 的个数。

序列中的每一项 bib_i 必须从给定的 nn 个数中选择,即对于每个 ii,都有:

bi{a1,a2,,an}b_i \in \{a_1,a_2,\dots,a_n\}

注意:

  • 每个位置都可以独立选择;
  • 同一个数值可以被重复选择多次;
  • 即使若干个 aia_i 的值相同,它们仍然视为不同的可选位置,因此会对方案数产生贡献。

请你求出合法序列的总数。由于答案可能很大,你只需要输出它对 109+710^9+7 取模后的结果。

输入格式

第一行包含两个整数 n,kn,k

第二行包含 nn 个整数 a1,a2,,ana_1,a_2,\dots,a_n

  • 1n1001 \le n \le 100
  • 1k10181 \le k \le 10^{18}
  • 0ai10180 \le a_i \le 10^{18}

输出格式

输出一个整数,表示合法序列的总数对 109+710^9+7 取模后的结果。

5 2
15 1 2 4 8
13
5 1
15 1 2 4 8
5

Hint

样例解释: 样例 2 中,长度为 1 的序列不需要检查相邻条件,因此直接可以从 5 个位置中任选 1 个,答案为 5。