luogu#P8702. [蓝桥杯 2019 国 B] 燃烧权杖(暂无正解)

[蓝桥杯 2019 国 B] 燃烧权杖(暂无正解)

题目背景

目前上传了 50%50 \% 的数据点。

50%50 \% 的数据点输出 00 即可通过。

题目描述

小 C 最近迷上了一款游戏。现在,在游戏中,小 C 有一个英雄,生命值为 xx;敌人也有一个英雄,生命值为 yy。除此以外,还有 kk 个士兵,生命值分别为 a1,a2,,aka_1,a_2,\cdots,a_k。现在小 C 打算使用一个叫做“燃烧权杖”的技能。

“燃烧权杖”会每次等概率随机选择一个活着的角色(英雄或士兵),扣减其 1010 点生命值,然后如果该角色的生命值小于或等于 00,则该角色死亡,不会再被“燃烧权杖”选中。“燃烧权杖”会重复做上述操作,直至任意一名英雄死亡。小 C 想知道使用“燃烧权杖”后敌方英雄死亡(即,小 C 的英雄存活)的概率。为了避免精度误差,你只需要输出答案模一个质数 pp 的结果,具体见输出格式。

输入格式

输入包含多组数据。

输入第一行包含一个正整数 TT,表示数据组数。

接下来 TT 组,每组数据第一行包含四个非负整数 xxyyppcc,分别表示小 C 的英雄的生命值、敌方英雄的生命值,模数和士兵个数。

第二行包含 kk 个正整数 a1,a2,,aka_1,a_2,\cdots,a_k,分别表示每个士兵的生命值。

输出格式

对于每组数据,输出一行一个非负整数,表示答案模质数 p 的余数。 可以证明,答案一定为有理数。设答案为 a/ba/baabb 为互质的正整数),你输出的数为 xx,则你需要保证 aab×xb\times xpp 同余;也即,xa×b1(modp)x \equiv a\times b^{-1} \pmod p,其中 b1b^{-1} 表示 bbpp 的逆元。

6
1 10 101 0
100 1 101 0
50 30 4903 2
1 1
987 654 233 1
321
1000000000 999999999 233 3
1 2 3
1000000000 999999999 3 3
1 2 3

51
37
1035
118
117
2

提示

【样例说明】 对于第一组数据,所求概率即为“燃烧权杖”第一次就扣减敌方英雄 1010 点生命值的概率,即 1/21/22×512 \times 5110110111

对于第二组数据,答案为 1023/10241023/10241024×371024 \times 3710231023101101 同余。

对于第三组数据,答案为 99/12899/128

【评测用例规模与约定】

对于 10%10\% 的评测用例,x,y,a1,,ak10x, y, a_1,\cdots, a_k \le 10

对于 20%20\% 的评测用例,x,y,a1,,ak100x, y, a_1,\cdots, a_k \le 100

对于 50%50\% 的评测用例,x,y,a1,,ak1000x, y, a_1,\cdots, a_k \le 1000

对于全部评测用例,1x,y,a1,,ak1091 ≤ x, y, a_1,\cdots, a_k ≤ 10^93p100003 \le p \le 10000pp 为质数,0k100 \le k \le 10

蓝桥杯 2019 年国赛 B 组 J 题。