CF1513B.AND Sequences

普及/提高-

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

A sequence of nn non-negative integers (n≥2n \ge 2) a1,a2,…,ana_1, a_2, \dots, a_n is called good if for all ii from 11 to n−1n-1 the following condition holds true: $$a_1 \: \& \: a_2 \: \& \: \dots \: \& \: a_i = a_{i+1} \: \& \: a_{i+2} \: \& \: \dots \: \& \: a_n,$$ where &\& denotes the bitwise AND operation.

You are given an array aa of size nn (n≥2n \geq 2). Find the number of permutations pp of numbers ranging from 11 to nn, for which the sequence ap1a_{p_1}, ap2a_{p_2}, ... ,apna_{p_n} is good. Since this number can be large, output it modulo 109+710^9+7.

一个长度为 nn(n≥2n \ge 2)的非负整数序列 a1,a2,…,ana_1, a_2, \dots, a_n 被称为好序列,当且仅当对所有 ii(1≤i≤n−11 \le i \le n-1)均满足如下条件:

a\_1 \\: \\& \\: a\_2 \\: \\& \\: \\dots \\: \\& \\: a\_i = a\_{i+1} \\: \\& \\: a\_{i+2} \\: \\& \\: \\dots \\: \\& \\: a\_n,

其中 &\& 表示按位与运算。

给定一个大小为 nn(n≥2n \geq 2)的数组 aa。求满足以下条件的排列 pp(即 11 到 nn 的一个排列)的个数:序列 ap1,ap2,…,apna_{p_1}, a_{p_2}, \dots, a_{p_n} 是好序列。由于该数目可能很大,请输出其对 109+710^9+7 取模的结果。

输入格式

The first line contains a single integer tt (1≤t≤1041 \leq t \leq 10^4), denoting the number of test cases.

The first line of each test case contains a single integer nn (2≤n≤2⋅1052 \le n \le 2 \cdot 10^5) — the size of the array.

The second line of each test case contains nn integers a1,a2,…,ana_1, a_2, \ldots, a_n (0≤ai≤1090 \le a_i \le 10^9) — the elements of the array.

It is guaranteed that the sum of nn over all test cases doesn't exceed 2⋅1052 \cdot 10^5.

第一行包含一个整数 tt(1≤t≤1041 \leq t \leq 10^4),表示测试用例的数量。

每个测试用例的第一行包含一个整数 nn(2≤n≤2⋅1052 \le n \le 2 \cdot 10^5)—— 表示数组的大小。

每个测试用例的第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(0≤ai≤1090 \le a_i \le 10^9)—— 表示数组的元素。

保证所有测试用例的 nn 之和不超过 2⋅1052 \cdot 10^5。

输出格式

Output tt lines, where the ii-th line contains the number of good permutations in the ii-th test case modulo 109+710^9 + 7.

输出 tt 行,其中第 ii 行包含第 ii 个测试用例中“好”排列的数量对 109+710^9 + 7 取模的结果。

输入输出样例

  • 输入#1

    4
    3
    1 1 1
    5
    1 2 3 4 5
    5
    0 2 0 3 0
    4
    1 3 5 1

    输出#1

    6
    0
    36
    4

说明/提示

In the first test case, since all the numbers are equal, whatever permutation we take, the sequence is good. There are a total of 66 permutations possible with numbers from 11 to 33: [1,2,3][1,2,3], [1,3,2][1,3,2], [2,1,3][2,1,3], [2,3,1][2,3,1], [3,1,2][3,1,2], [3,2,1][3,2,1].

In the second test case, it can be proved that no permutation exists for which the sequence is good.

In the third test case, there are a total of 3636 permutations for which the sequence is good. One of them is the permutation [1,5,4,2,3][1,5,4,2,3] which results in the sequence s=[0,0,3,2,0]s=[0,0,3,2,0]. This is a good sequence because

  • $ s_1 = s_2 : & : s_3 : & : s_4 : & : s_5 = 0$,
  • $ s_1 : & : s_2 = s_3 : & : s_4 : & : s_5 = 0$,
  • $ s_1 : & : s_2 : & : s_3 = s_4 : & : s_5 = 0$,
  • $ s_1 : & : s_2 : & : s_3 : & : s_4 = s_5 = 0$.

在第一个测试用例中,由于所有数字都相等,因此无论选择哪种排列,该序列都是“好”的。使用数字 11 到 33 总共可以构成 66 种排列:[1,2,3][1,2,3]、[1,3,2][1,3,2]、[2,1,3][2,1,3]、[2,3,1][2,3,1]、[3,1,2][3,1,2]、[3,2,1][3,2,1]。

在第二个测试用例中,可以证明不存在任何使得该序列为“好”的排列。

在第三个测试用例中,总共有 3636 种使得该序列为“好”的排列。其中一种是排列 [1,5,4,2,3][1,5,4,2,3],它生成的序列为 s=[0,0,3,2,0]s=[0,0,3,2,0]。这是一个“好”序列,因为

  • $ s_1 = s_2 : & : s_3 : & : s_4 : & : s_5 = 0$,
  • $ s_1 : & : s_2 = s_3 : & : s_4 : & : s_5 = 0$,
  • $ s_1 : & : s_2 : & : s_3 = s_4 : & : s_5 = 0$,
  • $ s_1 : & : s_2 : & : s_3 : & : s_4 = s_5 = 0$。

输入解题思路,AI测评打分。不知道怎么写?

首页