#include <iostream>
#include <string>
#include<math.h>
#include<algorithm>
using namespace std;
long long jiecheng(int x){
long long s = 1;
for (int i = 1; i <= x; i++)
{
s *= i;
}
return s;
}
int main()
{
int n, m;
int l;
long long x, y, z;
long long a[21];
//错排
a[1] = 0;
a[2] = 1;
for (int i = 3; i < 21; i++)
{
a[i] = (a[i - 1] + a[i - 2])*(i - 1);
}
while (cin >> l)
{
while (l--)
{
cin >> n >> m;
//C(n,m)
x = jiecheng(n);
y = jiecheng(m);
z = jiecheng(n - m);
long long res = x / y / z;
//n中选m个,这m个错排
cout << res*a[m] << endl;
}
}
}
杭电oj2049 错排*排列组合
最新推荐文章于 2021-11-07 10:23:26 发布
本文介绍了一种基于组合数学原理的错排算法实现。通过计算组合数与错排数来解决特定排列组合问题,利用C++编程语言实现了阶乘、组合数及错排数的计算,并提供了一个具体的示例程序。

319

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



