Luogu8143 solution

Problem

link->https://www.luogu.com.cn/problem/P8143

Solution

很明显,排列 \(p\) 的生产图要么为偶环图,要么为奇环图。

引理:如果 \(p\) 的生产图为偶环数,那么交换其中任意两项 \(a_i\)\(a_j\),新的排列 \(p_1\) 的生产图为奇数环,反之亦然。

证明:设交换前共 \(x\) 环,则有两种情况:

  • 如果两点处于同一环,交换则后该环分裂成两个环,因为原图有边无项边 \((i,a_i)\)\((j,a_j)\) 处于同一环中,如交换则变成 \((i,a_j)\)\((j,a_i)\) 原来的环的两条边断裂,而新的两条边则又形成两个封闭环形。此刻有 \(x+1\) 个环。
  • 如果两点不处于同一环,交换后该环合并成同一环。原因同上。此刻有 \(x-1\) 个环。

由于 \(x\)\(x-1\)\(x+1\) 的奇偶性不同,故成立。

证毕。

\([1,n]\) 的所有排列共有 \(n!\) 种,而交换每个排列的其中两项该图奇偶性改变,则偶图(或奇图)的个数为 \(\frac{1}{2}n!\)

Code

#include<bits/stdc++.h>
#define int long long
const int MOD=998244353;
signed main() {
	int ans=1,n;
	scanf("%lld",&n);
	if(n==1) return 0&puts("0");
	for(int i=3;i<=n;i++)
		ans=ans*i%MOD;
	printf("%lld",ans);
	return 1;
}
posted @ 2022-08-02 08:39  lsj2009  阅读(34)  评论(0)    收藏  举报