循环排列(circular permutation)亦称圆排列、环排列等。是排列的一种,指从n个不同元素中取出m(1≤m≤n)个不同的元素排列成一个环形,既无头也无尾。两个循环排列相同当且仅当所取元素的个数相同并且元素取法一致,在环上的排列顺序一致。
#include<bits/stdc++.h> using namespace std; int main() { int n; scanf("%d",&n); unsigned long long ans=0; for(long long i=1;i<(1<<n);i++) { int num=0; long long now=i; while(now) { if(now&1) num++; now/=2; } if(num==n/2) ans++; } ans/=2; unsigned long long hh=1; for(int i=1;i<n/2;i++) { hh*=i*1ll; } hh*=hh; printf("%lld\n",ans*hh); }
E. Two Round Dances 环排列
最新推荐文章于 2024-05-16 22:33:44 发布