这个比较简单,就是错排公式的简单应用。
#include <iostream>
using namespace std;
long long int fz[25];
long long int fm[25];
void tofz()
{
fz[1]=0; fz[2]=1;
for(int i=3;i<=20;i++)
fz[i]=(i-1)*(fz[i-1]+fz[i-2]);
}
void tofm()
{
fm[0]=1; fm[1]=1;fm[2]=2;
for(int i=3;i<=20;i++)
fm[i]=fm[i-1]*i;
}
int main()
{
int t,n,m;
long long ans;
tofz(); tofm();
cin>>t;
while(t--)
{
cin>>n>>m;
ans=fm[n]/fm[n-m];
ans/=fm[m];
ans*=fz[m];
cout<<ans<<endl;
}
return 0;
}