#agc034f. [agc034_f]RNG and XOR
[agc034_f]RNG and XOR
题目描述
Snuke 发现了一个随机数生成器。它可以生成一个介于 和 (包含)之间的整数。一个整数序列 表示每个这些整数被生成的概率。整数 ()以 的概率被生成,其中 。每次执行生成器时,生成整数的过程是相互独立的。
Snuke 有一个整数 ,初始为 。他可以执行以下操作任意次数:
- 使用生成器生成一个整数 ,并用 替换 ,其中 表示按位异或。
对于每个整数 (),找到 变为 的预期操作次数,并以 取模后输出。更正式地说,将预期操作次数表示为一个既约分数 。那么,存在唯一的整数 ,使得 ,且 ,所以输出这个 。
我们可以证明,对于每个 , 变为 的预期操作次数是一个有限的有理数,并且其按 取模后的整数表示是可以确定的。
约束条件
- 输入中的所有值都是整数。
输入
输入以以下格式从标准输入给出:
输出
输出 行。第 行()应包含 变为 的预期操作次数,按 取模后的结果。
示例输入1
2
1 1 1 1
示例输出1
0
4
4
4
时不需要进行任何操作,因此 变为 的预期操作次数为 。
此外,从任何状态开始,经过一次操作后, 的值可能是 、、 或 ,概率相等。因此, 变为 、 和 的预期操作次数都是 。
示例输入2
2
1 2 1 2
示例输出2
0
499122180
4
499122180
变为 、、 和 的预期操作次数分别是 、、 和 。
示例输入3
4
337 780 799 10 796 875 331 223 941 67 148 483 390 565 116 355
示例输出3
0
468683018
635850749
96019779
657074071
24757563
745107950
665159588
551278361
143136064
557841197
185790407
988018173
247117461
129098626
789682908