luogu#P8555. 嘘月

嘘月

题目背景

“我早已认不出你的眼睛,也没有在想念你的面容;

你还是没有说出再见,就化作黑夜离开了。”

赫尔德看着潮水,忽觉这不断上涨的潮水就像是持续上升的热情,它维持着热恋的时间,而激动的情绪又带给我们更多的热情。但是初识的热情终会逐渐平淡,又有多少人能在冷却的心跳中找到其中不变的节奏,走完这一生呢?

题目描述

赫尔德想对上面的问题进行探究,她想先做一些统计,于是她抽象了这个问题。

对于一个长为 nn 的排列,我们维护一个下标 tt,初始 t=mt=m

重复以下过程:

  • 从下标在 1t1\sim t 的元素中选一个没标记过的,并将其标记。若标记的数比上一次标记的数大且 t<nt<n,则 tt 自增 11;否则结束此过程。在你进行第一次标记前,上一次标记的数视为 00

我们称这样的排列是好的:

  • 存在某种方法,使得在经过若干次操作后,t=nt=n

现在,给定 mm,求长为 nn 的好的排列在所有长为 nn 的排列中所占比例,对 998244353998244353 取模。换言之,若长为 nn 的好的排列一共有 xx 个,你需要输出 xn!\frac x{n!} 取模 998244353998244353 的结果。如果你不理解有理数的取模,可以看这道题目

qq 次询问,每次给出一个 mm

输入格式

第一行两个正整数 n,qn,q

第二行 qq 个正整数,表示每次询问的 mim_i。保证询问升序且两两不同。

输出格式

对于每次询问一行一个整数表示答案对 998244353998244353 取模的值。

5 3
1 2 3

291154603
249561089
1

50 5
4 7 9 14 17

344293672
864377042
192544332
688054502
97923957

提示

【样例解释 #1】

可以使得 t=nt=n 的排列的数量分别为 5,90,1205,90,120,排列总共有 5!=1205!=120 种,所以分别需要输出 5120,90120,120120\frac{5}{120},\frac{90}{120},\frac{120}{120}。取模后即为样例输出中的答案。

m=1m=1 时,以下是所有可以使得 t=nt=n 的排列:

$$\{1,2,3,4,5\},\{2,3,4,5,1\},\{1,3,4,5,2\},\{1,2,4,5,3\},\{1,2,3,5,4\} $$

m=2m=2 时,列出了一些可以使得 t=nt=n 的排列:

{1,4,2,3,5},{1,5,4,3,2}\{1,4,2,3,5\},\{1,5,4,3,2\}

和一些不能使得 t=nt=n 的排列:

{5,4,3,2,1},{3,5,2,1,4}\{5,4,3,2,1\},\{3,5,2,1,4\}

【数据范围】

保证 1qn1051\le q\le n\le 10^51min1\leq m_i \leq n,询问的 mim_i 互不相同且升序排列。

$$\def{\arraystretch}{1.5} \begin{array}{c|c|c|c}\hline \textbf{子任务编号}&\bm{~~~~~~~n\le~~~~~~~}&\textbf{~~~特殊限制~~~}&\textbf{~~分数~~}\cr\hline \textsf1 & 5 &&7\cr\hline \textsf2 & 200&&23\cr\hline \textsf3 & 2\times 10^4 &m_i=1& 9\cr \hline \textsf4 & 2\times 10^4 &2m_i\ge n& 3\cr \hline \textsf5 & 2\times 10^4 &&12\cr\hline \textsf6 & &q=1&36\cr\hline \textsf7 & &&10\cr\hline \end{array} $$

提示:O(n2)O(n^2) 能跑挺多点的。