#ATarc146f. [ARC146F] Simple Solitaire

[ARC146F] Simple Solitaire

题目描述

给定一个 (1,2,,N)(1,2,\dots,N) 的排列 PP,进行如下操作。

NN 张卡片,这些卡片编号为 11NN。卡片 ii 上写有 PiP_i

有一个整数 X=1X=1。一开始 PCT 君手上没有任何卡片。PCT 君按照 i=1,2,,Ni=1,2,\dots,N 的顺序进行以下操作:

  • 获得卡片 ii。之后,只要手上有写有 XX 的卡片,就重复以下操作:
  • 吃掉写有 XX 的卡片,并将 XX11
  • 如果当前手上的卡片数量不少于 MM,则将手上所有卡片全部丢弃,操作立即结束。此后不再进行任何操作。

现在,定义排列 PP 的分数如下:

  • 如果卡片被丢弃导致操作结束,则 PP 的分数为 00
  • 如果卡片没有被丢弃,操作一直进行到最后,则 PP 的分数为 i=1N1\prod_{i=1}^{N-1}(第 ii 次操作结束时 PCT 君手上持有的卡片数量)。

对于所有可能的 PP(共有 N!N! 种),请输出所有分数的总和对 998244353998244353 取模的结果。

输入格式

输入通过标准输入给出,格式如下:

N MN\ M

输出格式

请输出答案。

样例 1

输入

3 2

输出

1

样例 2

输入

3 3

输出

5

样例 3

输入

146146 146

输出

103537573

说明/提示

限制条件

  • 2N2×1052\leq N\leq 2\times 10^5
  • 2MN2\leq M\leq N
  • 输入均为整数。

样例解释 1

P=(3,1,2)P=(3,1,2) 为例,操作如下:

  • 11 次操作:PCT 君获得卡片 11。当前手上有 11 张卡片,继续操作。
  • 22 次操作:PCT 君获得卡片 22。吃掉卡片 22XX 变为 22。当前手上有 11 张卡片,继续操作。
  • 33 次操作:PCT 君获得卡片 33。吃掉卡片 1,31,3XX 变为 44。当前手上有 00 张卡片,继续操作。

操作一直进行到最后,因此 (3,1,2)(3,1,2) 的分数为 1×1=11\times 1=1。除了 (3,1,2)(3,1,2) 之外,没有其他排列的分数大于等于 11,所以答案为 11

由 ChatGPT 4.1 翻译