AT_arc223_b [ARC223B] Valid Arrays by K-Divisible Swaps
题目描述
给定一个长度为 $N$ 的整数序列 $A$,以及一个正整数 $K$。
你可以对 $A$ 执行如下操作任意次:
- 选择一个整数 $i$,满足 $1 \leq i \leq N-1$,且 $A_i + A_{i+1}$ 能被 $K$ 整除,然后交换 $A_i$ 和 $A_{i+1}$ 的位置。
请你求出,经过若干次操作(可以为零)后,序列 $A$ 可能变成的本质不同序列的总数。由于答案可能很大,请对 $998244353$ 取模。
对于每组输入,请解决 $T$ 组测试用例。
输入格式
输入从标准输入读入,格式如下:
> $T$ $\mathrm{case}_1$ $\mathrm{case}_2$ $\vdots$ $\mathrm{case}_T$
每组测试用例 $\mathrm{case}_t$ 的格式如下:
> $N$ $K$ $A_1$ $A_2$ $…$ $A_N$
输出格式
共输出 $T$ 行,第 $t$ 行输出第 $t$ 组测试用例的答案。
说明/提示
### 样例解释 1
对于第一组测试用例,$A$ 经过若干次操作可以变成以下四种序列:$(1,2,4,7)$、$(1,4,2,7)$、$(1,4,7,2)$、$(2,1,4,7)$。
### 约束条件
- $1 \leq T \leq 10^5$
- $2 \leq N \leq 2 \times 10^5$
- $1 \leq K \leq 10^9$
- $1 \leq A_i \leq 10^9$
- 所有测试用例中的 $N$ 之和不超过 $2 \times 10^5$。
- 所有输入值均为整数。
由 ChatGPT 5 翻译