#P4257. 可爱の#10数字划分

    ID: 3202 Type: RemoteJudge 1000~10000ms 500MiB Tried: 0 Accepted: 0 Difficulty: 5 Uploaded By: Tags>O2优化排序素数判断,质数,筛法概率论

可爱の#10数字划分

题目背景

可可可可可可爱的付公主 qwq 有 nn 个数,1n1\sim n,每个数都有价值 ViV_i,你要将它们划分成若干个集合,每个数属于一个集合。

题目描述

我们这里规定:

  1. 质数只能和质数分在同一个集合。
  2. 合数只能和合数分在同一个集合(11 也算在合数内)。
  3. 我们假设目前所有质数集合的并集为 UU(也就是之前所有质数集合以及 SS 的并集),每个质数集合 SS 的价值定义如下:
$$V_S=\frac {(\sum_{i\in S}V_i)^p} {\prod_{i\in U}V_i} $$
  1. 我们定义每个合数集合 SS 的价值如下:

k=Sk=|S|,我们用这 kk 个数分别作为 kk 条边的权值,连接 k+1k+1 个点,构成一棵树。对于一个排列 P(1k+1)P(1\sim k+1),价值为:

VP=i=1n1f(Pi,Pi+1)V_P=\sum_{i=1}^{n-1} f(P_i,P_{i+1})

其中 f(u,v)f(u,v) 为路径 (u,v)(u,v) 上最大的边权。

集合 SS 的价值为:

VS=E(min{VP})×SV_S=E(\min\{V_P\})\times|S|

其中 E(X)E(X) 代表 XX 的数学期望,期望是针对所有可能的有标号无根树,min\min 是针对所有可能的 PP。这时集合内所有元素都不同,也就是所有边不同。

  1. 一个划分方案的价值定义为所有集合的价值的乘积。
  2. 两个划分方案相同当且仅当它们中所有集合对应相同,且质数集合的相对顺序相同。

现在给定 n,pn,pViV_i,请你求出所有合法的不同划分方案的价值之和。

结果对 109+710^9+7 取模,除法请使用乘法逆元。

输入格式

第一行输入两个正整数 n,pn,p

第二行输入 nn 个正整数 ViV_i

输出格式

共一行一个非负整数,代表答案对 109+710^9+7 取模的结果。

4 1
1 2 3 4

333333359

提示

样例解释

有以下 66 种划分方案:

  1. (2,3)(2,3)(1,4)(1,4)(2,3)(2,3) 的价值为 56{\dfrac 5 6}(1,4)(1,4) 的价值为 1010,总价值为 253{\dfrac {25} 3}
  2. (2),(3)(2),(3)(1,4)(1,4)(2)(2) 的价值为 11(3)(3) 的价值为 12{\dfrac 1 2}(1,4)(1,4) 的价值为 1010,总价值为 55
  3. (3),(2)(3),(2)(1,4)(1,4)(3)(3) 的价值为 11(2)(2) 的价值为 13{\dfrac 1 3}(1,4)(1,4) 的价值为 1010,总价值为 103{\dfrac {10} 3}
  4. (2,3)(2,3)(1),(4)(1),(4)(2,3)(2,3) 的价值为 56{\dfrac 5 6}(1)(1) 的价值为 11(4)(4) 的价值为 44,总价值为 103{\dfrac {10} 3}
  5. (2),(3)(2),(3)(1),(4)(1),(4)(2)(2) 的价值为 11(3)(3) 的价值为 12{\dfrac 1 2}(1)(1) 的价值为 11(4)(4) 的价值为 44,总价值为 22
  6. (3),(2)(3),(2)(1),(4)(1),(4)(3)(3) 的价值为 11(2)(2) 的价值为 13{\dfrac 1 3}(1)(1) 的价值为 11(4)(4) 的价值为 44,总价值为 43{\dfrac 4 3}

因此所有划分方案的价值和为703{\dfrac {70} 3}。对 109+710^9+7 取模后结果为 333333359333333359

数据范围

对于 100%100\% 的数据,满足 1n701\le n\le 701Vi10121\le V_i\le 10^{12}

下表中给出了每个测试点具体的数据范围,都表示小于等于。为了防止卡 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

提示:大家不要太过相信自己的常数,尽量做好常数优化。