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
小结:
简单的数学问题,分奇偶性考虑。