Type: Default 1500ms 512MiB

[R41F]幸运

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

时空限制

1.5s / 512M

题目描述

排列是指一个长度为 nn 的序列,其中从 11nn 的每个整数恰好出现一次。

apiadu 最近在研究排列,他认为每个排列的“幸运程度”是不同的。具体来说,对于一个长度为 nn 的排列 p1,p2,,pnp_1, p_2, \dots, p_n,定义其 前缀最小值数量 KK 为满足以下条件的下标 kk (1kn1 \le k \le n) 的个数:

min(p1,p2,,pk)=pk\min(p_1, p_2, \dots, p_k) = p_k

换句话说,如果 pkp_k 是序列 p1,,pkp_1, \dots, p_k 中的最小值,那么它就贡献 11 个计数。

接着,定义该排列的 幸运值KdK^d,其中 dd 是一个给定的非负整数。

现在 apiadu 想知道:对于所有长度为 nn 的排列,它们的幸运值之和是多少?

由于答案可能非常大,请输出答案对 998244353998244353 取模后的结果。

格式

输入格式

第一行包含一个正整数 TT,表示数据组数。

接下来 TT 行,每行包含两个整数 nndd,表示一组询问。

输出格式

输出 TT 行,每行一个整数,表示该组询问的答案对 998244353998244353 取模后的结果。

样例

样例输入 #1

2
3 2
5 0

样例输出 #1

23
120

样例解释 #1

对于 n=3,d=2n=3, d=2

  • 排列 1 2 3:前缀最小值为 1,个数 K=1K=1,幸运值 12=11^2=1
  • 排列 1 3 2:前缀最小值为 1,个数 K=1K=1,幸运值 12=11^2=1
  • 排列 2 1 3:前缀最小值为 2, 1,个数 K=2K=2,幸运值 22=42^2=4
  • 排列 2 3 1:前缀最小值为 2, 1,个数 K=2K=2,幸运值 22=42^2=4
  • 排列 3 1 2:前缀最小值为 3, 1,个数 K=2K=2,幸运值 22=42^2=4
  • 排列 3 2 1:前缀最小值为 3, 2, 1,个数 K=3K=3,幸运值 32=93^2=9。 总和为 1+1+4+4+4+9=231+1+4+4+4+9 = 23

对于 n=5,d=0n=5, d=0: 任意排列的幸运值为 K0=1K^0 = 1。 长度为 55 的排列共有 5!=1205! = 120 个,故总和为 120120

样例输入 #2

2
5 4
8 20

样例输出 #2

6844
708009807

数据规模

注意:你只有通过了子任务的所有测试点,才能获得对应子任务的分数。

子任务编号 nn \le dd \le TT \le 分值 依赖子任务
11 88 55 1010 2020
22 100100 1010 100100 3030 11
33 1n1051 \le n \le 10^5 2020 4×1044 \times 10^4 5050 1,21, 2

对于 100%100\% 的数据,保证 1T4×1041 \le T \le 4 \times 10^41n1051 \le n \le 10^5 0d200 \le d \le 20

代码源挑战赛 Round 41

Not Attended
Status
Done
Rule
DMY
Start at
2025-12-12 20:00
End at
2025-12-12 21:30
Duration
1.5 hour(s)
Host
Partic.
436