杭电2049错排
1 #include<stdio.h> 2 int c(int n,int m) 3 { 4 if(m==0||n==m) 5 return 1; 6 else 7 return c(n-1,m)+c(n-1,m-1); 8 } 9 10 int main() 11 { 12 int t,i,n,m; 13 __int64 p[50]; 14 p[1]=0;p[2]=1; 15 for(i=3;i<21;i++) 16 p[i]=(i-1)*(p[i-2]+p[i-1]); 17 scanf("%d",&t); 18 while(t--) 19 { 20 scanf("%d%d",&n,&m); 21 printf("%I64d\n",c(n,m)*p[m]); 22 23 } 24 return 0; 25 }