https://codeforces.com/contest/1433/problem/E
其实这题直接在oeis输入最后一个数字就可以结束了
题意:有n个人,保证n是偶数,这n个人每次站成2个圈,每个圈恰好n/2个人,问你有多少种站法。其中要求每个圈按照圆排列的方式进行,也就是圆的相对顺序不一样这个圆才算不一样。
思路:
先挑n个里面的n/2个组合的人出来,在这n/2个人中进行圆排列。[左边式子]
剩下的n/2个人就是C(n/2,n/2)=1,然后也可以进行圆排列。[右边式子]
想起高中老师讲排列组合的时候这么算但是是有重复的,最后要/2;
化简得:2*n!/(n^2)
#include<iostream>
#include<vector>
#include<queue>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<cstdio>
#include<algorithm>
#define debug(a) cout<<#a<<"="<<a<<endl;
using namespace std;
const int maxn=1e5+100;
typedef long long LL;
int main(void)
{
cin.tie(0);std::ios::sync_with_stdio(false);
LL n;cin>>n;
LL fac=1;
for(LL i=1;i<=n;i++){
fac=fac*i;
}
fac*=2;
fac/=(n*n);
cout<<fac<<endl;
return 0;
}