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

 

你可能感兴趣的:(杭电)