loj#P3315. 「ZJOI2020」抽卡

    ID: 16503 传统题 5000ms 512MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>DFT(含 NTT)及FFTZJOI生成函数 / 母函数2020拉格朗日反演

「ZJOI2020」抽卡

题目描述

Bob 喜欢抽卡。

Bob 最近入坑了一款叫“主公连结” 的抽卡游戏。游戏中共有 nn 个不同的角色,编号为 1n1\sim n。当 Bob 获得其中的编号连续的 kk 张卡时,就可以组出理论最强阵容。

当期卡池中共有 mm 张不同的卡,每次抽卡,Bob 都可以等概率随机获得一张卡池中的卡。如果 Bob 抽到了一张他已经拥有的卡,那么什么事都不会发生,等于 Bob 浪费了这次抽卡机会。Bob 是个谨慎的人,他想知道,如果他不停地抽卡直到抽到编号连续的 kk 张卡时停止抽卡,期望需要抽多少轮。

输入格式

第一行输入两个整数 m,km, k

第二行输入 mm 个两两不同的整数 a1,a2,,ama_1, a_2, \dots, a_m,表示卡池中有哪些角色。

题面中的 nn 即为最大的 aia_i 的值。

输出格式

输出一行一个整数,代表期望轮数对 p=998244353p = 998244353 取模后的结果。即,如果期望数量的最简分数表示为 ab\frac ab,你需要输出一个整数 cc 满足 c×ba(modp)c\times b \equiv a \pmod p

3 2
1 2 3
499122180
10 2
1 2 3 4 5 7 8 9 11 12
839792873

数据范围与提示

对于前 10%10\% 的数据,m10m\le 10

对于另外 10%10\% 的数据,m500m \le 500k=m1k = m − 1

对于另外 10%10\% 的数据,m500m \le 500 且保证有且仅有一组理论最强阵容。

对于另外 10%10\% 的数据,m500m \le 500 且保证任意两组可抽出的理论最强阵容不交。

对于前 50%50\% 的数据,m500m \le 500

对于前 70%70\% 的数据,m5000m \le 5000

对于另外 10%10\% 的数据,k=5k = 5

对于另外 10%10\% 的数据,k=2000k = 2000

对于 100%100\% 的数据,$1 \le m \le 200000, 1 \le a_i \le 2m, 2 \le k \le m$,保证卡池中至少存在一组可抽出的理论最强阵容(即编号连续的 kk 张卡)。