CF1513B.AND Sequences
普及/提高-
通过率:0%
时间限制:2.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
A sequence of n non-negative integers (n≥2) a1,a2,…,an is called good if for all i from 1 to n−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 a of size n (n≥2). Find the number of permutations p of numbers ranging from 1 to n, for which the sequence ap1, ap2, ... ,apn is good. Since this number can be large, output it modulo 109+7.
一个长度为 n(n≥2)的非负整数序列 a1,a2,…,an 被称为好序列,当且仅当对所有 i(1≤i≤n−1)均满足如下条件:
a\_1 \\: \\& \\: a\_2 \\: \\& \\: \\dots \\: \\& \\: a\_i = a\_{i+1} \\: \\& \\: a\_{i+2} \\: \\& \\: \\dots \\: \\& \\: a\_n,其中 & 表示按位与运算。
给定一个大小为 n(n≥2)的数组 a。求满足以下条件的排列 p(即 1 到 n 的一个排列)的个数:序列 ap1,ap2,…,apn 是好序列。由于该数目可能很大,请输出其对 109+7 取模的结果。
输入格式
The first line contains a single integer t (1≤t≤104), denoting the number of test cases.
The first line of each test case contains a single integer n (2≤n≤2⋅105) — the size of the array.
The second line of each test case contains n integers a1,a2,…,an (0≤ai≤109) — the elements of the array.
It is guaranteed that the sum of n over all test cases doesn't exceed 2⋅105.
第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。
每个测试用例的第一行包含一个整数 n(2≤n≤2⋅105)—— 表示数组的大小。
每个测试用例的第二行包含 n 个整数 a1,a2,…,an(0≤ai≤109)—— 表示数组的元素。
保证所有测试用例的 n 之和不超过 2⋅105。
输出格式
Output t lines, where the i-th line contains the number of good permutations in the i-th test case modulo 109+7.
输出 t 行,其中第 i 行包含第 i 个测试用例中“好”排列的数量对 109+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 6 permutations possible with numbers from 1 to 3: [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [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 36 permutations for which the sequence is good. One of them is the permutation [1,5,4,2,3] which results in the sequence 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$.
在第一个测试用例中,由于所有数字都相等,因此无论选择哪种排列,该序列都是“好”的。使用数字 1 到 3 总共可以构成 6 种排列:[1,2,3]、[1,3,2]、[2,1,3]、[2,3,1]、[3,1,2]、[3,2,1]。
在第二个测试用例中,可以证明不存在任何使得该序列为“好”的排列。
在第三个测试用例中,总共有 36 种使得该序列为“好”的排列。其中一种是排列 [1,5,4,2,3],它生成的序列为 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测评打分。不知道怎么写?