编程题
### 问题描述 在维多利亚的魔法世界中,小然是一名新晋魔法师。他在研究一种古老神秘的魔法阵,该魔法阵由一个长度为 $M $ 的数字序列构成,这个序列被称为“良序”。一个序列被定义为良序的条件是,对于序列中的每一对数字 $(i, j)$(满足 $1 \leq i < j \leq M$),都满足以下神秘公式: $$ A_i \mid A_j = (A_i \oplus A_j) + A_j $$ 其中 $\mid$ 表示位或运算,$\oplus$ 表示位异或运算。 注意:当 $M=1$ 时我们仍然视为一个“良序”。 小然现在在研究一种神秘的魔法阵,这个魔法阵由一个大小为 $N$ 的排列 $P$ 构成。这个排列中的每一个数字都是从 $1$ 到 $N$ 的整数,且每个整数都只出现一次。小然想知道,这个魔法阵中有多少个良序子序列。由于答案可能会非常大,所以请你帮助小然计算出这个数目模 $10^9 + 7$ 的结果。 ### 输入格式 输入的第一行包含一个整数 $T$,表示测试用例的数量。 接下来的每个测试用例首先包含一个整数 $N$,表示排列的长度。 然后一行包含 $N$ 个由空格隔开的整数,表示排列 $P$ 的元素 $P_1, P_2, \ldots, P_N$。 ### 输出格式 对于每个测试用例,输出一行,包含一个整数,表示 $P$ 中良序子序列的数量模 $10^9 + 7$ 的结果。 ### 样例输入 ```text 4 3 1 2 3 4 3 4 2 1 4 2 3 4 1 5 4 5 2 1 3 ``` ### 样例输出 ```text 3 6 5 6 ``` ### 说明 在第一个测试用例中:良序子阵为 $[1], [2], [3]$。 在第二个测试用例中:良序子阵为 $[3], [4], [2], [1], [3, 2], [3, 1]$。 ### 评测数据范围 $1 \leq T \leq 2000$,$1 \leq N \leq 10^5$,$1 \leq P_i \leq N$。 保证 $P$ 是一个排列。所有测试用例的 $N$ 之和不会超过 $2 \times 10^5$。
查看答案
赣ICP备20007335号-2