luogu#P16400. [ECUSTPC 2026 Spring] 朝复夕

[ECUSTPC 2026 Spring] 朝复夕

背景

:::epigraph 朝复夕,朝夕复。 :::

题目描述

本题和试题 G 朝复习没有关系。

小 T 准备出一些经典的问题……

对于给定一个长度为 nn 的排列 p={p1,p2,,pn}p = \{p_1, p_2, \dots, p_n\},小 T 将进行一次操作 (i,j)(i, j)

  • 取一对下标 1i<jn1 \le i < j \le n,交换 pp 中的 pip_ipjp_j

对于所有不同的合法操作 (i,j)(i, j),小 T 需要计算交换之后的排列所表示的置换的阶数之和。

由于答案可能很大,小 T 需要计算答案对 998244353998\,244\,353 取模的值。

请帮助小 T 计算这个问题。

试题的提示中附带有有关于置换和排列的相关信息。

输入格式

第一行输入一个整数 T (1T105)T \ (1 \le T \le 10^5),表示测试数据的数量。

每组测试数据第一行输入一个整数 n (2n105)n \ (2 \le n \le 10^5),表示排列的长度。

随后一行输入 nn 个整数 p1,p2,,pn (1pin)p_1, p_2, \dots, p_n \ (1 \le p_i \le n),表示所给定的排列。

保证所有测试数据输入中的 n3×105\sum n \le 3 \times 10^5,且每组测试数据给定序列一定是一个合法的排列。

输出格式

对于每组测试数据输出一行一个整数,表示对于所有不同的合法操作 (i,j)(i, j),交换之后的排列所表示的置换的阶数之和对 998244353998\,244\,353 取模的值。

2
3
2 3 1
4
2 1 4 3
6
20

提示

样例 1 解释

对于第 11 组测试数据,共有 33 种不同的交换方式:

  • 交换 p1p_1p2p_2,排列变为 p={3,2,1}p = \{3, 2, 1\},可以注意到 p2=id3p^2 = \mathrm{id}_3,因为 p(p(1))=p(3)=1p(p(1)) = p(3) = 1p(p(2))=p(2)=2p(p(2)) = p(2) = 2p(p(3))=p(1)=3p(p(3)) = p(1) = 3,因此阶数为 22
  • 交换 p1p_1p3p_3,排列变为 p={1,3,2}p = \{1, 3, 2\},可以注意到 p2=id3p^2 = \mathrm{id}_3,阶数为 22
  • 交换 p2p_2p3p_3,排列变为 p={2,1,3}p = \{2, 1, 3\},可以注意到 p2=id3p^2 = \mathrm{id}_3,阶数为 22

因此答案为 66

提示

一个 11nn 的排列是一个长度为 nn 且其中每个 11nn 的整数都出现且仅出现一次的序列,这个排列的长度也为 nn.

S={1,2,,n}S = \{1, 2, \dots, n\},一个 11nn 的置换是指从 SSSS 的一个双射。

一个长度为 nn 的排列 p={p1,p2,,pn}p = \{p_1, p_2, \dots, p_n\} 可以表示一个置换 pp,也即 p(i)=pip(i) = p_i.

例如第 11 组样例的 p={2,3,1}p = \{2, 3, 1\} 表示的置换是 p(n):{1,2,3}{1,2,3}p(n): \{1, 2, 3\} \to \{1, 2, 3\},其中

p(1)=2, p(2)=3, p(3)=1.p(1) = 2,\ p(2) = 3,\ p(3) = 1.

长度为 nn 恒等置换 $\mathrm{id}_n: \{1, 2, \dots, n\} \to \{1, 2, \dots, n\}$ 定义为 idn(i)=i\mathrm{id}_n(i) = i,例如一个长度为 44 的恒等置换 id4\mathrm{id}_4 有:

$$\mathrm{id}_4(1) = 1,\ \mathrm{id}_4(2) = 2,\ \mathrm{id}_4(3) = 3,\ \mathrm{id}_4(4) = 4.$$

两个置换 ppqq 的复合 pqp \circ q 表示的是 pq(i)=p(q(i))p \circ q(i) = p(q(i)) 这个置换。

长度为 nn 的置换的幂次 pmp^m(其中 mm 是非负整数)定义为

$$p^m = \begin{cases} p \circ p^{m-1}, & m \ge 1; \\ \mathrm{id}_n, & m = 0. \end{cases}$$

长度为 nn 的置换的阶数 ord(p)\mathrm{ord}(p) 定义为最小的正整数 kk,满足 pk=idnp^k = \mathrm{id}_n.