P16520 [GKS 2015 #E] Not So Random
题目描述
有一个特定的“随机数生成器”(RNG),它接受一个非负整数作为输入,并生成另一个非负整数作为输出。但你知道这个 RNG 实际上根本算不上随机!它使用一个固定的数字 $K$,并且总是执行以下三种操作之一:
- 以 $A/100$ 的概率:返回输入与 $K$ 的按位与
- 以 $B/100$ 的概率:返回输入与 $K$ 的按位或
- 以 $C/100$ 的概率:返回输入与 $K$ 的按位异或
(你可以假定 RNG 在每次基于 $A$、$B$ 和 $C$ 的值选择操作时,**确实**是真正随机的。)
你拥有 $N$ 个这样的 RNG 副本,并将它们串联在一起,使得前一个机器的输出成为串联中下一个机器的输入。如果你将 $X$ 作为输入提供给第一个机器,那么串联中最后一个机器的输出的期望值是多少?
输入格式
输入的第一行给出测试用例的数量 $T$。接下来是 $T$ 个测试用例;每个测试用例占一行,包含六个整数 $N$、$X$、$K$、$A$、$B$ 和 $C$。它们分别表示机器的数量、初始输入、所有按位操作(在每台机器上)将使用的固定数字,以及按位与、按位或、按位异或操作的概率乘以 $100$ 后的值。
输出格式
对于每个测试用例,输出一行形如 `Case #x: y` 的内容,其中 $x$ 是测试用例编号(从 $1$ 开始),$y$ 是最终输出的期望值。如果 $y$ 与正确答案的绝对或相对误差在 $10^{-9}$ 以内,则被视为正确。
说明/提示
在样例测试用例 #1 中,如果发生按位与或按位或,最终输出将是 $5$;如果发生按位异或,最终输出将是 $0$。因此得到 $5$ 的概率是 ($0.1 + 0.5$),得到 $0$ 的概率是 $0.4$。所以最终输出的期望值是 $5 \times 0.6 + 0 \times 0.4 = 3$。
在样例测试用例 #2 中,最终输出以 $0.72$ 的概率为 $5$,否则为 $0$。
### 限制
- $1 \le T \le 50$。
- $0 \le A \le 100$。
- $0 \le B \le 100$。
- $0 \le C \le 100$。
- $A + B + C = 100$。
**小数据集(测试集 1 - 可见)**
- $1 \le N \le 10$。
- $0 \le X \le 10^4$。
- $0 \le K \le 10^4$。
**大数据集(测试集 2 - 隐藏)**
- $1 \le N \le 10^5$。
- $0 \le X \le 10^9$。
- $0 \le K \le 10^9$。
翻译由 DeepSeek V4 Pro 完成