B. Marin and Anti-coprime Permutation


B. Marin and Anti-coprime Permutation

题目大意:

给一个1~n的排列,若满足以下条件则是一个“美丽排列”。
$$
gcd(1p_1,2p_2,...,n*p_n) > 1
$$
给定一个n,问有多少种美丽排列,模998244353 。

思路和代码:

想一手,对于每一种排列,若要满足条件,则需要 每一个i*pi的奇偶性相同。

若n是奇数,则必定有一个i*pi是奇数*偶数,所以n为奇数的情况不可能。

若n是偶数,则我们可以让奇数和偶数相乘,这样所有的i*pi就都是偶数了。

ll fac[N] ;
 
inline void init(){
	fac[0] = 1;//初始化阶乘
	for(ll i = 1;i <= 1010; i++)
		fac[i] = fac[i-1] * i % mod;
}

ll solve(){
	ll x ; cin >> x ;
	if(x & 1) return 0 ;
	return (fac[x / 2] * fac[x / 2]) % mod ;
}//code_by_tyrii 
小结:

简单的数学问题,分奇偶性考虑。