A16860 | Operation Permutation
时间限制1s
内存限制256MB
通过 / 提交0/0
题目描述
AksLolCoding 有一个整数 $x$ 和一个包含 $n$ 个操作的列表。每个操作是一个字符串,以符号 +、-、x 或 / 开头(分别表示加法、减法、乘法与实数除法),紧接着是一个正整数 $y$($1 \leq y \leq 10^9$)。例如,操作 x3 表示将 $x$ 乘以 $3$。
AksLolCoding 会将这些操作随机排列,然后按照排列后的顺序依次作用在 $x$ 上。请你帮助 AksLolCoding 计算 $x$ 的期望 $^\ast$ 最终值对 $10^9+7$ 取模后的结果。
更正式地,令 $M = 10^9 + 7$。可以证明答案可表示为不可约分数 $\frac{p}{q}$,其中 $p,q$ 为整数,并且 $q \not\equiv 0 \pmod M$。请输出满足 $0 \leq a < M$ 且 $a \cdot q \equiv p \pmod M$ 的整数 $a$。
$^\ast$ $x$ 的期望最终值定义为 $x$ 在所有 $n!$ 种操作排列顺序下的最终值的平均值。
AksLolCoding 会将这些操作随机排列,然后按照排列后的顺序依次作用在 $x$ 上。请你帮助 AksLolCoding 计算 $x$ 的期望 $^\ast$ 最终值对 $10^9+7$ 取模后的结果。
更正式地,令 $M = 10^9 + 7$。可以证明答案可表示为不可约分数 $\frac{p}{q}$,其中 $p,q$ 为整数,并且 $q \not\equiv 0 \pmod M$。请输出满足 $0 \leq a < M$ 且 $a \cdot q \equiv p \pmod M$ 的整数 $a$。
$^\ast$ $x$ 的期望最终值定义为 $x$ 在所有 $n!$ 种操作排列顺序下的最终值的平均值。
输入格式
第一行包含一个整数 $t$($1 \leq t \leq 1000$),表示测试用例的组数。
每个测试用例的第一行包含两个整数 $n$ 和 $x$($1 \leq n \leq 3000$,$1 \leq x \leq 10^9$)。
每个测试用例的第二行包含 $n$ 个字符串,每个字符串表示一种操作,格式如上所述。
所有测试用例中 $n^2$ 的总和不超过 $3000^2$。
注意:x 表示乘法运算,不是乘号 *。
每个测试用例的第一行包含两个整数 $n$ 和 $x$($1 \leq n \leq 3000$,$1 \leq x \leq 10^9$)。
每个测试用例的第二行包含 $n$ 个字符串,每个字符串表示一种操作,格式如上所述。
所有测试用例中 $n^2$ 的总和不超过 $3000^2$。
注意:x 表示乘法运算,不是乘号 *。
输出格式
对于每个测试用例,输出一个整数,表示 $x$ 的期望最终值对 $10^9+7$ 取模的结果。
输入输出样例
输入 #1
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
输出 #1
5 2 166666677 601980218
在第一个测试用例中,$x$ 可以变为 $(10\cdot 2)-10=10$ 或 $(10-10)\cdot 2=0$,因此期望值为 $5$。
在第二个测试用例中,所有排列下的结果均为 $x=2$。
在第三个测试用例中,$x$ 的期望值为 $\frac{55}{6}$。
在第二个测试用例中,所有排列下的结果均为 $x=2$。
在第三个测试用例中,$x$ 的期望值为 $\frac{55}{6}$。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?