题目背景
可可可可可可爱的付公主 qwq 有 n 个数,1∼n,每个数都有价值 Vi,你要将它们划分成若干个集合,每个数属于一个集合。
题目描述
我们这里规定:
- 质数只能和质数分在同一个集合。
- 合数只能和合数分在同一个集合(1 也算在合数内)。
- 我们假设目前所有质数集合的并集为 U(也就是之前所有质数集合以及 S 的并集),每个质数集合 S 的价值定义如下:
$$V_S=\frac {(\sum_{i\in S}V_i)^p} {\prod_{i\in U}V_i}
$$
- 我们定义每个合数集合 S 的价值如下:
令 k=∣S∣,我们用这 k 个数分别作为 k 条边的权值,连接 k+1 个点,构成一棵树。对于一个排列 P(1∼k+1),价值为:
VP=i=1∑n−1f(Pi,Pi+1)
其中 f(u,v) 为路径 (u,v) 上最大的边权。
集合 S 的价值为:
VS=E(min{VP})×∣S∣
其中 E(X) 代表 X 的数学期望,期望是针对所有可能的有标号无根树,min 是针对所有可能的 P。这时集合内所有元素都不同,也就是所有边不同。
- 一个划分方案的价值定义为所有集合的价值的乘积。
- 两个划分方案相同当且仅当它们中所有集合对应相同,且质数集合的相对顺序相同。
现在给定 n,p 和 Vi,请你求出所有合法的不同划分方案的价值之和。
结果对 109+7 取模,除法请使用乘法逆元。
输入格式
第一行输入两个正整数 n,p。
第二行输入 n 个正整数 Vi。
输出格式
共一行一个非负整数,代表答案对 109+7 取模的结果。
4 1
1 2 3 4
333333359
提示
样例解释
有以下 6 种划分方案:
- (2,3) 和 (1,4)。(2,3) 的价值为 65,(1,4) 的价值为 10,总价值为 325。
- (2),(3) 和 (1,4)。(2) 的价值为 1,(3) 的价值为 21,(1,4) 的价值为 10,总价值为 5。
- (3),(2) 和 (1,4)。(3) 的价值为 1,(2) 的价值为 31,(1,4) 的价值为 10,总价值为 310。
- (2,3) 和 (1),(4)。(2,3) 的价值为 65,(1) 的价值为 1,(4) 的价值为 4,总价值为 310。
- (2),(3) 和 (1),(4)。(2) 的价值为 1,(3) 的价值为 21,(1) 的价值为 1,(4) 的价值为 4,总价值为 2。
- (3),(2) 和 (1),(4)。(3) 的价值为 1,(2) 的价值为 31,(1) 的价值为 1,(4) 的价值为 4,总价值为 34。
因此所有划分方案的价值和为370。对 109+7 取模后结果为 333333359。
数据范围
对于 100% 的数据,满足 1≤n≤70,1≤Vi≤1012。
下表中给出了每个测试点具体的数据范围,都表示小于等于。为了防止卡 OJ,所以本题数据组数进行压缩,分值改变,具体参照表格。
数据编号 |
n |
p |
Vi |
测试点分值 |
时限 |
1 |
10 |
1 |
100 |
10 |
1s |
2 |
20 |
1000 |
3 |
30 |
10000 |
4 |
40 |
1e9 |
1e12 |
5 |
50 |
1 |
5 |
6 |
1e9 |
7 |
60 |
1 |
2s |
8 |
1e9 |
9 |
70 |
20 |
10s |
10 |
5s |
提示:大家不要太过相信自己的常数,尽量做好常数优化。