#CF2200G. Operation Permutation

    ID: 7040 传统题 1000ms 256MiB 尝试: 2 已通过: 1 难度: 10 上传者: 标签>组合数学动态规划数学概率CodeforcesCodeforces Round 1084(Div3)Div3GCF2200G2200

Operation Permutation

题目描述

AksLolCoding 有一个整数 xx 和一个包含 nn 个操作的列表。每个操作是一个字符串,以符号 +、-、x 或 / 开头(分别表示加法、减法、乘法与实数除法),紧接着是一个正整数 yy1y1091 \leq y \leq 10^9)。例如,操作 x3 表示将 xx 乘以 33

AksLolCoding 会将这些操作随机排列,然后按照排列后的顺序依次作用在 xx 上。请你帮助 AksLolCoding 计算 xx 的期望 ^\ast 最终值对 109+710^9+7 取模后的结果。

更正式地,令 M=109+7M = 10^9 + 7。可以证明答案可表示为不可约分数 pq\frac{p}{q},其中 p,qp,q 为整数,并且 q≢0(modM)q \not\equiv 0 \pmod M。请输出满足 0a<M0 \leq a < Maqp(modM)a \cdot q \equiv p \pmod M 的整数 aa

^\ast xx 的期望最终值定义为 xx 在所有 n!n! 种操作排列顺序下的最终值的平均值。

输入格式

第一行包含一个整数 tt1t10001 \leq t \leq 1000),表示测试用例的组数。

每个测试用例的第一行包含两个整数 nnxx1n30001 \leq n \leq 30001x1091 \leq x \leq 10^9)。

每个测试用例的第二行包含 nn 个字符串,每个字符串表示一种操作,格式如上所述。

所有测试用例中 n2n^2 的总和不超过 300023000^2

注意:x 表示乘法运算,不是乘号 *。

输出格式

对于每个测试用例,输出一个整数,表示 xx 的期望最终值对 109+710^9+7 取模的结果。

样例

4
2 10
x2 -10
4 2
+6 +7 /1 -13
8 1
+1 x2 x3 +4 +5 +6 -7 -8
9 864209753
-918273645 x564738291 /365107362 x734582911 -654321789 x998244353 +172519103 /482193765 /482091376
5
2
166666677
601980218

样例说明

在第一个测试用例中,xx 可以变为 (102)10=10(10\cdot 2)-10=10(1010)2=0(10-10)\cdot 2=0,因此期望值为 55

在第二个测试用例中,所有排列下的结果均为 x=2x=2

在第三个测试用例中,xx 的期望值为 556\frac{55}{6}

由 ChatGPT 5 翻译

来源

Codeforces 2200G,英文题名 Operation Permutation。