EagleBear2002 的博客

这里必须根绝一切犹豫,这里任何怯懦都无济于事

P5389 [Cnoi2019] 数学课

题目描述

聪明的 Cirno 开始学习计算,于是她很开心的算出了从 1 一直加到 n

得到了一个 n 项的数列 : {an=1+2+3+4+...+n}

为了验证自己算是否算错,她需要以某种规律从数列里取出两个元素 v1,v2(元素可以相同),并等概率的选出整数 a[1,v1]b[1,v2] 判断哪个比较大。

所以她需要你来计算 a>b 的概率。

某种规律:选到数列第 i 个元素的概率是:

ain=1nan=3i×(i+1)n(n+1)(n+2)

输入格式

输入一个正整数 n

输出格式

输出在模 998244353 意义下的概率。

输入输出样例 #1

输入 #1

1
2

输出 #1

1
686292993

说明/提示

对于前 5% 的数据 n=3

对于前 15% 的数据 n100

对于前 30% 的数据 n5000

对于前 55% 的数据 n107

对于前 95% 的数据 1n1018

对于最后 5% 的数据 n=0 表示 正无穷

对于 100% 的数据 n 不为 998244353 的倍数。

题解

显然 a>ba<b 的概率是相等的,那么答案是 1P(a=b)2。问题转化为如何计算 P(a=b)

数列中的第 i 个元素 ai=j=1ij=i(i+1)2。那么恰好选中 ai 的概率为

3i(i+1)n(n+1)(n+2)×1i(i+1)2=6n(n+1)(n+2)

因为 1 在数列中被 n 个元素包含, 2,,3(n1) 个元素包含, 4,,6(n2) 个元素包含,i(i1)2+1,,i(i+1)2(n+1i) 个元素包含,所以选中 i(i1)2+1,,i(i+1)2 中任意一个数的概率为 6(n+1i)n(n+1)(n+2)。因此

P(a=b)=i=1ni×[6(n+1i)n(n+1)(n+2)]2=36i=1ni(n+1i)2[n(n+1)(n+2)]2=3n(n+2)

所以答案是 1232n(n+2)(当 n=+ 时, 答案为 12)。