错排很简单,重点在于要用N个新郎里的M个新郎有几种错排可能性。。好后悔1B课没有好好听排列组合</span>
#include <iostream>
using namespace std;
int main()
{
int C, N, M;
cin >> C;
while (C--)
{
cin >> N >> M;
__int64 Lu[25], Hui[25];
Lu[0] = 0;
Lu[1] = 1;
Lu[2] = 1;
Lu[3] = 2;
Hui[0] = Hui[1] = 1;
Hui[2] = 2;
for (int i = 4; i < 25; i++)
Lu[i] = (i - 1) * (Lu[i - 1] + Lu[i - 2]);
for (int i = 3; i < 25; i++)
Hui[i] = Hui[i - 1] * i;
cout << Hui[N]/Hui[M]/Hui[N-M] * Lu[M] << endl;
}
return 0;
}