P6132 [集训队互测 2019] 简单计数

题目背景

## 警告,滥用本题者将被封号。 $\mathsf C \color{red}\mathsf{auchySheep}$ 近期优化了他的 快速数论变换 (NTT) 模板的常数,现在他能在 $0.1\text s$ 内轻松跑过 $n=10^9$ 了,所以他准备用下面的这个简单计数题也考验一下你的常数优化水平。

题目描述

传说,在很久很久以前,有一张 $n​$ 个点的带标号**有向无环**图。每条边有一个颜色,为 $k$ 种不同颜色中的一种。这张图满足如下性质: - 每个点有不超过 $1$ 条出边 - 每个点的入边条数在集合 $S$ 中 由于某种原因,你想知道这样的图的个数。由于这样的图可能很多,你只要输出答案对 $998244353​$ 取模的值。 两个图不同当且仅当存在一条从某个点 $a$ 到某个点 $b$ 的有向边,它只在恰好一个图中出现,或在两个图中都出现但颜色不同。

输入格式

第一行输入三个正整数 $n, k, |S|$。 第二行从小到大输入 $|S|$ 个不同的非负整数,表示 $S$ 集合中的元素。

输出格式

输出一行一个 $[0,998244352]$ 的整数,表示符合题意的图的个数对 $998244353​$ 取模的值。

说明/提示

【样例一解释】 有如下 $13$ 个符合题意的图,其中 $a \to b$ 表示一条从 $a$ 连向 $b$ 的有向边: 1. 没有边 2. $1 \to 2$ 3. $2 \to 1$ 4. $1 \to3$ 5. $3 \to 1$ 6. $2 \to 3$ 7. $3 \to 2$ 8. $1 \to 2 \to 3$ 9. $1 \to 3 \to 2$ 10. $2 \to 1 \to 3$ 11. $2 \to 3 \to 1$ 12. $3 \to 1 \to 2$ 13. $3 \to 2 \to 1$ 【数据范围】 数据共分为 $7$ 个子任务。 - 子任务 $1$($5$ 分):$n \leq 8$。 - 子任务 $2$($10$ 分):$n \leq 5000$。 - 子任务 $3$($30$ 分):$n \leq 10^5$。 - 子任务 $4$($20$ 分):$n \leq 10^7$。 - 子任务 $5$($15$ 分):$n \leq 10^8$。 - 子任务 $6$($10$ 分):$S=\{0,1\}$。 - 子任务 $7$($10$ 分):无特殊限制。 对于 $100\%$ 的数据,$1 \le n \le 9 \times 10^8​$,$1 \le k \le 10^7$,$S \neq \varnothing$,$S \subseteq \{0,1,2,3\}$。 By:fjzzq2002 来源:2019 年集训队互测 Day5