题解:先从n个元素里选择n/2个,然后另一个圆也就确定了,对两个圆进行圆排列,但可能会有重复的所以/2
圆排列公式:从n个元素中选r进行圆排列。

#include <iostream>
#include <cstring>
#include <cmath>
#include <map>
#include <set>
#include <bits/stdc++.h>
#include <algorithm>
using namespace std;
typedef long long ll;
typedef pair<int,int>P;
const int N = 5e3+10;
const int inf = 0x7f7f7f7f;
ll fun(ll n){
ll sum = 1;
for(ll i = 1;i <= n;i++){
sum = sum*i;
}
return sum;
}
int main(){
// srand((unsigned)time(0));
/*
int n;cin >> n;
for(int i = 1;i <= n;i++){
a[i] = i;
}
fun1(n);
int ans = 1;
do{
if(fun(n)){
ans++;
fun1(n);
}
}while(next_permutation(a+1,a+1+n));
cout<<ans<<endl;
*/
ll n;cin >> n;
ll ans = 1,x = 1;
for(ll i = n/2+1;i <= n;i++){
ans = ans*i;
}
for(ll i = 1;i <= n/2;i++){
x = x*i;
}
ans /= x;
ans = ans*fun(n/2-1)*fun(n/2-1);
ans /= 2;
cout<<ans<<endl;
return 0;
}
/*
2 1
3 1
4 3
5 12
6 60
*/