错排公式
fn=(n-1)(fn-1 +fn-2)
#include<bits/stdc++.h>
using namespace std;
#define int unsigned long long
int f[90];
main()
{
int T;
cin>>T;
while(T--)
{
int n,m;
cin>>n>>m;
int ff=1;
for(int a=m+1;a<=n;a++)ff*=a;
for(int a=1;a<=n-m;a++)ff/=a;
f[0]=0,f[1]=0,f[2]=1;
for(int a=3;a<=n;a++)
{
f[a]=(a-1)*(f[a-1]+f[a-2]);
}
cout<<ff*f[m]<<endl;
}
}

本文介绍了一种经典的组合数学问题——错排问题,并提供了一个使用C++实现的错排公式的具体算法。该算法首先定义了递推关系式fn=(n-1)(fn-1+fn-2),然后通过迭代计算出给定数值n下的错排数。此外,还展示了如何计算特定范围内的排列数,以便进一步应用到实际问题中。
1107

被折叠的 条评论
为什么被折叠?



