E. Two Round Dances(圆排列) Codeforces Round #677
E. Two Round Dances
思路:组合数学中的圆排列问题,从N个数字取出一半,构成两个圆排列,重合再除以二。
AC code
#include<iostream>
using namespace std;
int main()
{
int n;cin >> n;
long long lst[22];
lst[1] = lst[0] = 1;
for (int i = 1;i <= 20;i++)
{
lst[i] = lst[i - 1] * i;
}
cout << lst[n] / (lst[n / 2] * lst[n / 2]) * lst[n / 2 - 1] * lst[n / 2 - 1] / 2;
}