QOJ.ac

QOJ

Limite de temps : 4.0 s Limite de mémoire : 1024 MB Points totaux : 100

#18561. 圆盘与宝石

Statistiques

Monocarp 是一名珠宝商。最近,他收到了一份非常奇怪的订单——客户想要一套根据非常特定规则镶嵌宝石的金属圆盘。

每个圆盘由三种材料之一制成——铜、银或金。此外,每个圆盘被分为 $n$ 个扇区,按顺时针方向从 $1$ 到 $n$ 编号。这些扇区镶嵌有 $k$ 种类型的宝石:每个扇区要么恰好镶嵌一颗宝石,要么完全不镶嵌(在这种情况下,该扇区被称为空白扇区)。

如果满足以下条件,则称两个圆盘 $a$ 和 $b$ 具有相同的图案(ornament):

  • 对于圆盘 $a$ 的每个镶嵌有宝石的扇区 $i$,圆盘 $b$ 的扇区 $i$ 也镶嵌有相同类型的宝石,反之亦然。

如果两个圆盘由相同的材料制成且具有相同的图案,则称它们是相同的。

对于 Monocarp 将发送给客户的集合中的每个圆盘,他按以下方式制作:

  • 首先,他为圆盘选择三种材料之一,并用该材料打造一个具有 $n$ 个空白扇区的圆盘;
  • 然后,他用 $1$ 类宝石镶嵌圆盘的两个扇区。他镶嵌的第一个扇区可以是任意空白扇区;然而,第二个扇区总是顺时针方向的下一个空白扇区;
  • 然后,他用 $2$ 类宝石镶嵌圆盘的两个扇区,以相同的方式选择它们;
  • 然后,他用 $3$ 类宝石镶嵌圆盘的两个扇区,以相同的方式选择它们;
  • 依此类推,直到对于 $k$ 种宝石中的每一种,都恰好有两个扇区镶嵌了该类型的宝石。圆盘中将恰好有 $n - 2k$ 个扇区保持空白。

例如,假设 $n = 5$,$k = 2$。制作圆盘的一种可能方式是:

  • Monocarp 打造了一个具有 $n$ 个空白扇区的银质圆盘;
  • 然后,他选择用 $1$ 类宝石镶嵌第 $4$ 个扇区。顺时针方向的下一个空白扇区是第 $5$ 个扇区,因此他也用 $1$ 类宝石镶嵌该扇区;
  • 然后,他选择用 $2$ 类宝石镶嵌第 $3$ 个扇区。顺时针方向的下一个空白扇区是第 $1$ 个扇区(因为第 $4$ 和第 $5$ 个扇区都已被镶嵌),因此他也用 $2$ 类宝石镶嵌该扇区。

Monocarp 想要组装一个圆盘集合,使得:

  • 集合中没有两个圆盘具有相同的图案(这也意味着集合中没有两个圆盘是相同的);
  • Monocarp 制作的圆盘数量是尽可能多的。

你的任务是计算 Monocarp 可以组装的不同集合的数量。当且仅当对于第一个集合中的每个圆盘,第二个集合中都有一个相同的圆盘,反之亦然时,两个集合才被认为是相同的。

输入格式

第一行包含一个整数 $t$($1 \le t \le 3 \cdot 10^5$)。

每个测试用例包含一行,包含两个整数 $n$ 和 $k$($2 \le n \le 9 \cdot 10^8$;$1 \le k \le \frac{n}{2}$)。

输出格式

对于每个测试用例,输出一个整数——Monocarp 可以组装的不同集合的数量,模 $998\,244\,353$ 的结果。

样例

输入样例 1

8
4 1
4 2
5 2
10 2
10 4
10 5
1337 42
888888888 8

输出样例 1

81
81
14348907
412733925
572390210
572390210
359416572
358909282

说明

在第一个测试用例中,Monocarp 最多可以制作 $4$ 个圆盘:

  • 具有图案 $[0, 0, 1, 1]$(其中 $0$ 表示空白扇区,$1$ 表示镶嵌有 $1$ 类宝石的扇区);
  • 具有图案 $[1, 0, 0, 1]$;
  • 具有图案 $[0, 1, 1, 0]$;
  • 具有图案 $[1, 1, 0, 0]$。

对于这些图案中的每一个,都有 $3$ 种选择材料的方式,因此答案为 $3^4 = 81$。

注意,图案 $[1, 0, 1, 0]$ 是不可能得到的:

  • 如果 Monocarp 选择第 $1$ 个扇区并用 $1$ 类宝石镶嵌它,下一个空白扇区将是第 $2$ 个扇区,因此得到的图案将是 $[1, 1, 0, 0]$;
  • 如果 Monocarp 选择第 $3$ 个扇区并用 $1$ 类宝石镶嵌它,下一个空白扇区将是第 $4$ 个扇区,因此得到的图案将是 $[0, 0, 1, 1]$。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.