杭电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 }

 

posted @ 2014-09-14 06:28  sequenceaa  阅读(218)  评论(0编辑  收藏  举报