B. [EPROI2025] chan的随机数

    传统题 文件IO:rand 1000ms 256MiB

[EPROI2025] chan的随机数

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

chan和miku深夜交谈。

「诶,我想生成一个随机数,等概率是 1122。」

「呐,我给你一枚均匀的硬币,你扔一次就好啦。」

「那如果我想让它等概率是 112233 呢?」

「嗯,我想想。这样吧,你先扔两次,如果依次是反反就生成 11,反正就生成 22,正反就生成 33,正正就重新来吧。」

「诶,这个方案是不是有可能永远不能结束啊?」

「是的呢,但是期望 83\frac{8}{3} 次就可以结束了,而且这是期望次数最小的方案。」

「好厉害呀。那如果我还是想让它是 1122,但是概率比是 1122 呢?」

「还是可以用刚才的方案,如果生成了 33 就当成 22 好了。」

「啊,那在这里还是期望次数最小的方案吗?」

「应该不是了吧,毕竟浪费了一些信息。」

「那么应该是什么方案呢?」

「似乎有点复杂了呢,让我想一想。」

从前有一个随机数生成器,能够生成一个 [1,n][1,n] 内的整数,且生成 i 的权重是 aia_i(即生成 1n1\ldots n 的概率比是 a1:a2::ana_1:a_2:\ldots :a_n)。现在它已经找不到了,而chan想模拟这个生成的过程,但是chan手里只有一枚均匀的硬币。

chan想了很久,设计了一个方案并开始扔硬币。

可是chan扔了很多很多次硬币,却发现还是没有模拟成功(或许这个方案实在太慢了,甚至有可能永远不会结束)。于是chan希望找到一个期望扔硬币次数最少的模拟方案,但是这个方案讲起来可能比较复杂(搞方案的话这题就上NOI-难度了,我都不一定能写出标准程序),chan想先知道这个最少的期望扔硬币次数。

输入格式

第一行,一个正整数 nn

第二行,nn 个空格隔开的正整数,其中第 ii 个数是 aia_i

输出格式

我们保证这个答案是一个正有理数,设其等于 PQ\frac{P}{Q},且 PQP ⊥ Q

我们保证存在非负整数 ANSANS,使得 PPR×QR\times Q1e9+7(即9982443531e9+7(即998244353) 取余的结果相等,设 S 是最小的 ANSANS

仅一行,一个非负整数 SS

样例

2
1 1
1

P=1,Q=1P=1,Q=1,方案见题目背景。

3
1 1 1
665496238

P=8,Q=3P=8,Q=3,方案见题目背景。

2
1 3
499122178

P=3,Q=2P=3,Q=2,方案是如果第一次正面则直接生成 22,否则根据第二次来生成 1122

数据的规模与约定

测试点编号 规模限制 特殊限制
1 (n=2)(n = 2) A
2, 3 B
4
5 (n=m)(n = m) A
6, 7 B
8
9 (m103)(m \leq 10^3) A
10, 11 B
12
13 (m105)(m \leq 10^5) A
14, 15 B
16
17 A
18, 19 B
20

对于所有数据,n106m107n\leq 10^6,m\leq 10^7。其中 mm 表示所有 aia_i 的和

特殊性质:

  • AA 表示 mm22 的幂次
  • BB 表示 mm 是奇数。

「EPR-OI杯」2025 年 EPR 第一届信息赛-网络个人赛

未参加
状态
已结束
规则
乐多
题目
5
开始于
2025-1-29 0:00
结束于
2025-2-11 18:00
持续时间
4 小时
主持人
参赛人数
67