Ps:WA了无限次...简直做到崩溃..高中学的知识都忘了....这道题就是跟2048差不多..

从N个人里选M个人,有Cmn种选法,然后就是M的错排*Cnm

代码:

#include "stdio.h"

long long dp[20];

int main(){  int n,m,i,j,a;  

long long sum,x,y,z;      

dp[0]=0;      

dp[1]=1;      

for(i=2;i<20;i++)          

dp[i]=i*(dp[i-1]+dp[i-2]);    //m个错排*Cnm  n=m-n;

 while(~scanf("%d",&a)){   

for(i=0;i<a;i++){    

scanf("%d%d",&n,&m);    

x=y=z=1;    

for(j=1;j<=n;j++)

x*=j;    

for(j=1;j<=m;j++)

y*=j;    

for(j=1;j<=n-m;j++)

z*=j;    

sum=x/(y*z);    

sum=sum*dp[m-1];    

printf("%lld\n",sum);   

}  

}  

return 0;

}