Select Code
#include<iostream>
using namespace std;
int main()
{
int n; cin >> n;
while (n--)
{
int a, b; cin >> a >> b; int p = b, q = b;
long long c = 1, d = 1;
while (p--)
{
c = a*c;
a = a - 1;
d = d*b;
b = b - 1;
}
long long f[21];
f[1] = 0; f[2] = 1;
for (int i = 3; i <= q; i++)
{
f[i] = (i - 1)*(f[i - 1] + f[i - 2]);
}
long long g; g = f[q] *( c / d);
cout << g << endl;
}
return 0;
}
根据递公式 a[n]=(n-1)(a[n-1]+a[n-2]);可得 n个新郎共有a[n]种错误的情况;其中a[1]=0;a[2]=1;