#P1056. 随机游走

随机游走

题目描述

给定一个长度为 nn 的序列 aa,考虑如下过程:

  • 初始 sum=0sum=0
  • [1,n][1,n] 中随机选出一个数 ss,令 l=sl=sr=sr=ssum=assum=a_s
  • 重复以下过程 n1n-1 次:
    • 按以下规则生成一个随机数 xx
      • l=1l=1,则 x=1x=1
      • r=nr=n,则 x=0x=0
      • 否则 xx12\frac{1}{2} 的概率为 11,有 12\frac{1}{2} 的概率为 00
    • x=0x=0,先令 ll1l\leftarrow l-1,再令 sumsum+al×(rl+1)sum\leftarrow sum+a_l\times(r-l+1)
    • x=1x=1,先令 rr+1r\leftarrow r+1,再令 sumsum+ar×(rl+1)sum\leftarrow sum+a_r\times(r-l+1)

可以证明以上过程结束后总有 l=1l=1r=nr=n,请你求出以上过程结束后 sumsum 的期望值,也即 E(sum)E(sum),你只需要输出这个值对 666528221666528221 (一个质数)取模后的值即可。

形式化地说,可以证明 E(sum)E(sum) 可以被表示成 pq\frac{p}{q} 的形式,其中 p,qp,q 均为整数且 gcd(p,q)=1\gcd(p,q)=1q≢0(mod666528221)q\not\equiv0\pmod{666528221}。可以证明在 [0,666528221)[0,666528221) 中唯一存在一个整数 rr 满足 q×rp(mod666528221)q\times r\equiv p\pmod{666528221},你只需要输出这个 rr 即可。

输入格式

第一行一个正整数 nn,表示 aa 的长度。

第二行 nn 个正整数,表示 aa

输出格式

一行一个非负整数,表示答案对 666528221666528221 取模后的值。

2
1 2
333264115

样例解释 1

若 s=0,则 ans=1+22=5。 若 s=1,则 ans=2+12=4。 故 E(ans)=9/2,你可以验证 2*333264115 mod 666528221=9。

3
1 2 3
12

数据范围

对于 10%10\% 的数据,保证 n10n\le 10

对于 30%30\% 的数据,保证 n500n\le 500​。

对于 50%50\% 的数据,保证 n5000n\le 5000

对于另外 10%10\% 的数据,保证 aa 中所有数均相同。

对于 100%100\% 的数据,保证 1n2×1051\le n\le 2\times 10^51ai<6665282211\le a_i< 666528221