一道错排题,照着公式来撸……
#include<iostream>
#include<string.h>
#include<stdio.h>
#include<ctype.h>
#include<algorithm>
#include<stack>
#include<queue>
#include<set>
#include<math.h>
#include<vector>
#include<map>
#include<deque>
#include<list>
using namespace std;
int main()
{
long long a[21]={1,1,2};
long long b[21]={0,0,1};
for(int i=3;i<=20;i++)
{
a[i]=a[i-1]*i;
b[i]=(i-1)*(b[i-1])+b[i-2];
}
int t,n,m;
cin>>t;
while(t--)
{
cin>>n>>m;
printf("%I64d\n",a[n]*b[m]/a[m]/a[n-m]);
}
return 0;
}