问题 C: 简单的数学题

内存限制:128 MB 时间限制:2.500 S
评测方式:文本比较 命题人:
提交:35 解决:3

题目描述

在 1 到 $N$ 中选取 $K$ 个数,有多少种选法使得选出的数字总和是 $N$ 的倍数?

由于答案可能太大,请输出结果对 998244353 取模的结果。

输入

本题包含多组数据

输入的第一行为一个整数 $T (1 \leq T \leq 5)$,表示共有 $T$ 组测试数据。

接下来依次出现 $T$ 组测试数据,每组数据包含两个整数 $N, K (1\leq N \leq 10^{9}, 1 \leq K \leq \min(100, N))$。

对于所有的测试数据,保证 $\sum K \leq 100$,保证 $N \neq 998244353$。

输出

输出一个整数:在 1 到 $N$ 中选取 $K$ 个数,使得选出的数字总和是 $N$ 的倍数的方法数。对 998244353 取模。

样例输入 复制

4
10 1
10 2
6 4
114514 19

样例输出 复制

1
4
3
579587762

提示

样例解释如下:

第一组测试数据,只有 1 种选法能够从 $1$ 到 $10$ 中选 1 个数,使得和为 10 的倍数:

  • $10$


第二组测试数据,有以下 4 种选法能够从 $1$ 到 $10$ 中选 2 个数,使得和为 10 的倍数:

  • $1 + 9 = 10$
  • $2 + 8 = 10$
  • $3 + 7 = 10$
  • $4 + 6 = 10$


第三组测试数据,有以下 3 种选法能够从 $1$ 到 $6$ 中选 4 个数,使得和为 6 的倍数:

  • $1 + 2 + 3 + 6 = 12$
  • $1 + 2 + 4 + 5 = 12$
  • $3 + 4 + 5 + 6 = 18$