编程题
燃烧权杖 ### 题目描述 小 C 最近迷上了一款游戏。现在,在游戏中,小 C 有一个英雄,生命值为 $x$;敌人也有一个英雄,生命值为 $y$。除此以外,还有 $k$ 个士兵,生命值分别为 $a_1、a_2、......、a_k$。 现在小 C 打算使用一个叫做"燃烧权杖"的技能。"燃烧权杖"会每次等概率随机选择一个活着的角色(英雄或士兵),扣减其 10 点生命值,然后如果该角色的生命值小于或等于 0,则该角色死亡,不会再被"燃烧权杖"选中。"燃烧权杖"会重复做上述操作,直至任意一名英雄死亡。 小 C 想知道使用"燃烧权杖"后敌方英雄死亡(即,小 C 的英雄存活)的概率。为了避免精度误差,你只需要输出答案模一个质数 $p$ 的结果,具体见输出描述。 ### 输入描述 输入包含多组数据。 输入第一行包含一个正整数 $T$,表示数据组数。 接下来 $T$ 组,每组数据第一行包含四个非负整数 $x、y、p、k$,分别表示小 C 的英雄的生命值、敌方英雄的生命值,模数和士兵个数。 第二行包含 $k$ 个正整数 $a_1、a_2、......、a_k$,分别表示每个士兵的生命值。 ### 输出描述 对于每组数据,输出一行一个非负整数,表示答案模质数 $p$ 的余数。 可以证明,答案一定为有理数。设答案为 $a/b$($a$ 和 $b$ 为互质的正整数),你输出的数为 $x$,则你需要保证 $a$ 与 $bx$ 模 $p$同余;也即,$x = (a·b^{−1}) \mod p$, 其中 $b^{−1}$ 表示 $b$ 模 $p$ 的逆元, $mod$ 为取模运算。 ### 输入输出样例 #### 示例 > 输入 ```txt 6 1 10 101 0 100 1 101 0 50 30 4903 2 1 1 987 654 233 1 321 1000000000 9999999999 233 3 1 2 3 1000000000 999999999 3 3 1 2 3 ``` > 输出 ```txt 51 37 1035 118 117 2 ```
查看答案
赣ICP备20007335号-2