如果一个排列 \(p\) 经过至多 \(m\) 次交换能变成 \(p'\),那么它们元素不同的位置 \(i\) (即不满足 \(p_i=p'_i\))至多能有 \(2\times m\) 个。也就是说,至少要有 \(n-2\times m\) 个位置,两个排列上的数相同。

注意到 \(m\le \frac{n}{3}\),也就是 \(n-2\times m\ge \frac{n}{3}\)。所以每次可能的情况,至少要有 \(\frac{n}{3}\) 的位置两个排列相同。

考虑循环移位的操作,经过 \(n-1\) 次移位形成的 \(n\) 个排列,每个元素只能在其中 \(1\) 次,满足 \(p_i=p'_i\)

所以至多只有 \(3\) 个排列满足要求,判断一下这 \(3\) 个即可。

代码:link