#P13178. [ARC146F] Simple Solitaire

    ID: 12361 传统题 10000ms 1024MiB 尝试: 2 已通过: 1 难度: 10 上传者: 标签>CF3000组合数学生成函数多项式分治数学计数DP

[ARC146F] Simple Solitaire

题目描述

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

N N 张卡片,这些卡片编号为 1 1 N N 。卡片 i i 上写有 Pi P_i

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

  • 获得卡片 i i 。之后,只要手上有写有 X X 的卡片,就重复以下操作:

  • 吃掉写有 X X 的卡片,并将 X X 1 1

  • 如果当前手上的卡片数量不少于 M M ,则将手上所有卡片全部丢弃,操作立即结束。此后不再进行任何操作。

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

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

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

输入格式

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

N M N\ M

输出格式

请输出答案。

输入输出样例 #1

输入 #1

3 2

输出 #1

1

输入输出样例 #2

输入 #2

3 3

输出 #2

5

输入输出样例 #3

输入 #3

146146 146

输出 #3

103537573

说明/提示

限制条件

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

样例解释 1

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

  • 1 1 次操作:PCT 君获得卡片 1 1 。当前手上有 1 1 张卡片,继续操作。
  • 2 2 次操作:PCT 君获得卡片 2 2 。吃掉卡片 2 2 X X 变为 2 2 。当前手上有 1 1 张卡片,继续操作。
  • 3 3 次操作:PCT 君获得卡片 3 3 。吃掉卡片 1,3 1,3 X X 变为 4 4 。当前手上有 0 0 张卡片,继续操作。

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