MC0357题解
问题描述
在一个二维坐标系中,有一个点一开始处在坐标 (x1, y1) 上,接下来该点会进行 n 次移动,每次移动有两种可能:
- 如果当前点坐标为 (x, y),则下一步以
的概率移动到 (x + 1, y)。 - 如果当前点坐标为 (x, y),则下一步以
的概率移动到 (x, y + 1)。
已知 p + q = 100。
现在问,经过 n 次移动后,该点恰好处在坐标 (x2, y2) 上的概率是多少?
可以证明概率可以表示为
输入格式
第一行包含一个整数 T (1 ≤ T ≤ 103),表示有 T 组测试用例。
接下来 T 行,每行 7 个整数 x1, y1, x2, y2, n, p, q (|x1|,|y1|,|x2|,|y2| ≤ 109, 1 ≤ n ≤ 3 × 105, 0 ≤ p, q ≤ 100, p + q = 100) 表示该组测试用例。
输出格式
对于每组测试用例,输出一个整数,表示答案。
样例输入
1 | 2 |
样例输出
1 | 923176378 |
思路
题目的最终要求就是在一个网格图上从点(x1, y1)移动到点(x2, y2),并且移动过程中只能往左和往下。
因此最终往左移动的次数x就等于x2 − x1,往下移动的次数y就等于y2 − y1,且x + y = n。
所以接下来就是决定每一步到底往左还是往右,这就变为n个多重集合的全排列问题,方案数为:
但还要乘上往左和往右的概率,所以最终的概率为:
次幂部分用快速幂就行。
由于有多组测试用例,所以阶乘部分不能每次都遍历计算一下,需要全局计算好。
代码
1 | const int N = 300010, MOD = 998244353; |
复杂度
- 时间:O(N + T ⋅ (log N + log M))
- 空间:O(N)
Comments
Comment plugin failed to load
Loading comment plugin