#P16520. [GKS 2015 #E] Not So Random

    ID: 18895 远端评测题 1000ms 1024MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>数学2015Special Judge期望Google Kick Start

[GKS 2015 #E] Not So Random

题目描述

有一个特定的“随机数生成器”(RNG),它接受一个非负整数作为输入,并生成另一个非负整数作为输出。但你知道这个 RNG 实际上根本算不上随机!它使用一个固定的数字 KK,并且总是执行以下三种操作之一:

  • A/100A/100 的概率:返回输入与 KK 的按位与
  • B/100B/100 的概率:返回输入与 KK 的按位或
  • C/100C/100 的概率:返回输入与 KK 的按位异或

(你可以假定 RNG 在每次基于 AABBCC 的值选择操作时,确实是真正随机的。)

你拥有 NN 个这样的 RNG 副本,并将它们串联在一起,使得前一个机器的输出成为串联中下一个机器的输入。如果你将 XX 作为输入提供给第一个机器,那么串联中最后一个机器的输出的期望值是多少?

输入格式

输入的第一行给出测试用例的数量 TT。接下来是 TT 个测试用例;每个测试用例占一行,包含六个整数 NNXXKKAABBCC。它们分别表示机器的数量、初始输入、所有按位操作(在每台机器上)将使用的固定数字,以及按位与、按位或、按位异或操作的概率乘以 100100 后的值。

输出格式

对于每个测试用例,输出一行形如 Case #x: y 的内容,其中 xx 是测试用例编号(从 11 开始),yy 是最终输出的期望值。如果 yy 与正确答案的绝对或相对误差在 10910^{-9} 以内,则被视为正确。

3
1 5 5 10 50 40
2 5 5 10 50 40
10 15 21 70 20 10
Case #1: 3.0000000000
Case #2: 3.6000000000
Case #3: 15.6850579098

提示

在样例测试用例 #1 中,如果发生按位与或按位或,最终输出将是 55;如果发生按位异或,最终输出将是 00。因此得到 55 的概率是 (0.1+0.50.1 + 0.5),得到 00 的概率是 0.40.4。所以最终输出的期望值是 5×0.6+0×0.4=35 \times 0.6 + 0 \times 0.4 = 3

在样例测试用例 #2 中,最终输出以 0.720.72 的概率为 55,否则为 00

限制

  • 1T501 \le T \le 50
  • 0A1000 \le A \le 100
  • 0B1000 \le B \le 100
  • 0C1000 \le C \le 100
  • A+B+C=100A + B + C = 100

小数据集(测试集 1 - 可见)

  • 1N101 \le N \le 10
  • 0X1040 \le X \le 10^4
  • 0K1040 \le K \le 10^4

大数据集(测试集 2 - 隐藏)

  • 1N1051 \le N \le 10^5
  • 0X1090 \le X \le 10^9
  • 0K1090 \le K \le 10^9

翻译由 DeepSeek V4 Pro 完成