luogu#P16822. [蓝桥杯 2026 国 Python B] 零段积分

[蓝桥杯 2026 国 Python B] 零段积分

题目描述

小蓝在做一种随机字符串实验。她有一个长度为 NN 的序列,初始时所有位置均为 00。实验开始后,序列中的每个位置独立地以概率 PQ\frac{P}{Q} 变为 11,其余位置保持为 00

实验结束后,所有连续的 00 会被 11 分隔成若干段。

设从左到右出现的非空连续零段长度依次为 l1,l2,,lkl_1, l_2, \dots, l_k

小蓝定义该序列的价值为

S=i=1k1li×li+1S = \sum_{i=1}^{k-1} l_i \times l_{i+1}

也就是说,价值是所有相邻零段长度乘积之和。若零段数量少于 22,则价值为 00

现在,请你计算 SS 的期望值,并输出其对 109+710^9 + 7 取模后的结果。

输入格式

输入一行,包含三个整数 N,P,QN, P, Q,分别表示序列长度,以及每个位置变为 11 的概率的分子和分母。

保证 0PQ0 \le P \le QQ>0Q > 0,且 gcd(P,Q)=1\gcd(P, Q) = 1

输出格式

输出一行,一个整数,表示 SS 的期望值对 109+710^9 + 7 取模后的结果。

若期望值为分数 ab\frac{a}{b},则输出 a×b1mod(109+7)a \times b^{-1} \bmod (10^9 + 7),其中 b1b^{-1} 表示 bb 在模 109+710^9 + 7 意义下的乘法逆元。

4 1 2
937500007

提示

【样例说明】

N=4N=4 且每个位置以概率 12\frac{1}{2} 变为 11 时,所有 242^4 种状态等概率出现,但只有以下状态的价值非零:

状态 零段长度 价值
00100010 2,12, 1 22
01000100 1,21, 2
01010101 1,11, 1 11
01100110
10101010

因此 E[S]=2+2+1+1+116=716E[S] = \frac{2+2+1+1+1}{16} = \frac{7}{16}。在模 109+710^9 + 7 意义下,716\frac{7}{16} 等于 937500007937500007

【评测用例规模与约定】

对于 30%30\% 的评测用例,1N201 \le N \le 20

对于所有评测用例,1N1061 \le N \le 10^60PQ1090 \le P \le Q \le 10^9gcd(P,Q)=1\gcd(P, Q) = 1