AT_arc146_f [ARC146F] Simple Solitaire

题目描述

给定一个 $ (1,2,\dots,N) $ 的排列 $ P $,进行如下操作。 > 有 $ N $ 张卡片,这些卡片编号为 $ 1 $ 到 $ N $。卡片 $ i $ 上写有 $ P_i $。 > > 有一个整数 $ X=1 $。一开始 PCT 君手上没有任何卡片。PCT 君按照 $ i=1,2,\dots,N $ 的顺序进行以下操作: > > - 获得卡片 $ i $。之后,只要手上有写有 $ X $ 的卡片,就重复以下操作: > - 吃掉写有 $ X $ 的卡片,并将 $ X $ 加 $ 1 $。 > > - 如果当前手上的卡片数量不少于 $ M $,则将手上所有卡片全部丢弃,操作立即结束。此后不再进行任何操作。 现在,定义排列 $ P $ 的分数如下: - 如果卡片被丢弃导致操作结束,则 $ P $ 的分数为 $ 0 $。 - 如果卡片没有被丢弃,操作一直进行到最后,则 $ P $ 的分数为 $ \prod_{i=1}^{N-1} $(第 $ i $ 次操作结束时 PCT 君手上持有的卡片数量)。 对于所有可能的 $ P $(共有 $ N! $ 种),请输出所有分数的总和对 $ 998244353 $ 取模的结果。

输入格式

输入通过标准输入给出,格式如下: > $ N\ M $

输出格式

请输出答案。

说明/提示

### 限制条件 - $ 2\leq N\leq 2\times 10^5 $ - $ 2\leq M\leq N $ - 输入均为整数。 ### 样例解释 1 以 $ P=(3,1,2) $ 为例,操作如下: - 第 $ 1 $ 次操作:PCT 君获得卡片 $ 1 $。当前手上有 $ 1 $ 张卡片,继续操作。 - 第 $ 2 $ 次操作:PCT 君获得卡片 $ 2 $。吃掉卡片 $ 2 $,$ X $ 变为 $ 2 $。当前手上有 $ 1 $ 张卡片,继续操作。 - 第 $ 3 $ 次操作:PCT 君获得卡片 $ 3 $。吃掉卡片 $ 1,3 $,$ X $ 变为 $ 4 $。当前手上有 $ 0 $ 张卡片,继续操作。 操作一直进行到最后,因此 $ (3,1,2) $ 的分数为 $ 1\times 1=1 $。除了 $ (3,1,2) $ 之外,没有其他排列的分数大于等于 $ 1 $,所以答案为 $ 1 $。 由 ChatGPT 4.1 翻译